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

Nginx正则location中try_files指向PHP脚本出现404问题求助

问题分析与解决方案

你当前的Nginx配置无法正确将/uploads路径的请求转发到PHP脚本,核心原因是try_files的用法不符合预期——它主要用于静态文件的存在性检查,而非直接触发PHP脚本的执行逻辑,导致请求没有被正确传递到PHP处理块。

解决方案一:使用rewrite内部跳转(推荐)

替换你的uploads location配置块为以下内容:

location ~ ^/uploads/(.*) {
    rewrite ^/uploads/(.*)$ /file-pickup.php?path=$1 last;
}
  • last指令会让Nginx重新匹配location规则,此时/file-pickup.php会命中你已有的PHP处理块,参数能正确传递,且不会产生301/302外部重定向。

解决方案二:直接在uploads location中配置FastCGI

如果不想依赖rewrite,也可以直接在uploads的location块内配置FastCGI参数,跳过重新匹配步骤:

location ~ ^/uploads/(?<upload_path>.*) {
    fastcgi_param SCRIPT_FILENAME $document_root/file-pickup.php;
    fastcgi_param QUERY_STRING path=$upload_path;
    include fastcgi.conf;
    fastcgi_pass unix:/var/run/php-fpm/example.sock;
}

这种方式直接将请求转发给PHP-FPM处理,无需依赖其他location块,逻辑更直接。

内容的提问来源于stack exchange,提问作者Chris Haas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:13:08