Laravel项目Nginx配置:含index.php的URL返回404
Nginx层面拦截所有index.php开头的URL返回404
直接在你的Laravel项目对应的Nginx server配置块里添加一条优先级更高的拦截规则即可,具体操作如下:
- 打开项目的Nginx配置文件(通常位于
/etc/nginx/sites-available/目录下) - 在原有配置的
location /和location ~ \.php$规则之前,插入以下代码:
# 拦截所有以index.php开头的请求,直接返回404 location ~ ^/index.php { return 404; }
- 先验证配置语法是否正确:
sudo nginx -t
- 验证通过后重载Nginx使配置生效:
sudo nginx -s reload
原理说明
Nginx的location匹配按优先级执行,这条^/index.php的正则匹配优先级高于常规的location /和PHP处理规则。当用户访问domain.com/index.php或domain.com/index.php/page这类URL时,会被直接拦截并返回404,不会进入Laravel的入口文件处理逻辑。
你的原有Laravel标准Nginx配置大概是这样的,确保拦截规则放在它们前面:
location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 根据你的PHP版本和FPM配置调整路径 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; }
内容的提问来源于stack exchange,提问作者Bunyamin Kurt
相关产品推荐
相关产品推荐

