You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx Rewrite规则配置求助:URL重写后出现404错误

解决Nginx URL重写导致的404问题

你的配置出现404的核心原因是重写规则陷入无限循环,同时可能缺少PHP文件的执行配置。以下是具体修复步骤:

1. 修复重写规则的循环问题

当前的location ~ ^\/(.*)\.php$会匹配所有.php结尾的请求,包括重写后的/index.php,这会导致请求被反复重写:

  • 初始请求/somepage.php → 重写为/index.php?page=somepage
  • 重写后的请求依然匹配.php规则 → 再次重写为/index.php?page=index
  • 循环多次后Nginx终止请求,返回404

修改location规则,用否定前瞻断言排除index.php,避免循环:

location ~ ^/(?!index\.php)(.*)\.php$ {
    rewrite ^/(.*)\.php$ /index.php?page=$1 last;
}

2. 确保存在PHP执行配置

如果Nginx配置中没有处理PHP文件的规则,重写后的index.php会被当成静态文件返回404。必须添加以下配置让Nginx解析PHP:

location ~ \.php$ {
    include fastcgi_params;
    # 替换为你的PHP-FPM地址,可能是socket或IP:端口格式
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # 可选:防止PHP解析漏洞
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

3. 验证配置

修改完成后,重启Nginx生效:

sudo systemctl restart nginx

此时访问mysite.com/somepage.php会被正确重写为index.php?page=somepage,PHP代码会加载对应的页面。

补充说明

你的PHP逻辑本身没有问题,只要page参数正确传递,就能正常匹配并加载对应页面。

内容的提问来源于stack exchange,提问作者István Szabó

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:42:49