修改Laravel Herd配置实现无.php扩展名的请求自动解析
解决原生PHP无扩展名URL映射问题
调整Nginx核心配置,让无扩展名请求优先匹配对应PHP文件
找到Nginx配置中处理根路径和PHP的location块,替换成以下配置:# 处理根路径请求 location / { try_files $uri $uri/ $uri.php?$query_string; } # 处理PHP文件请求 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # 根据你的PHP-FPM实际端口调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }关键是
try_files的顺序:先找请求对应的静态文件,再找目录,最后自动补全.php扩展名并传递请求参数,避免直接跳转到index.php。检查Herd配置中的强制重写规则
如果你的herd.config里有类似rewrite ^/(.*)$ /index.php?$1 last;的规则,会强制把所有请求导向index.php,这就是问题根源。直接注释掉这条规则,或者调整它的优先级,让无扩展名PHP文件的匹配逻辑先执行。验证配置并重启服务
执行nginx -t检查配置语法是否合法,确认无误后运行nginx -s reload重启Nginx,让新配置生效。额外排查点
- 确认服务器上确实存在
case-studies.php文件,且Web服务器用户(比如www-data)拥有可读权限 - 避免其他location块(比如处理静态资源的规则)拦截了PHP请求的匹配逻辑
- 不要使用专为单页应用设计的
try_files $uri $uri/ /index.php?$query_string;规则,原生PHP需要精准映射到对应文件
- 确认服务器上确实存在
内容的提问来源于stack exchange,提问作者jbrogan99
相关产品推荐
相关产品推荐

