Nginx配置下子目录/presskit内PHP文件访问异常404问题排查求助
配置存在的问题
- 多余的
alias配置:你已经在server全局声明了根目录为/var/www/html/spreadcamp.com/public_html,/presskit路径默认就会映射到根目录下的presskit子目录,额外配置和根路径完全一致的alias反而会引发路径解析冲突。 - PHP脚本路径参数错误:
alias配置下使用$request_filename作为SCRIPT_FILENAME参数时,Nginx不会按照alias的规则解析路径,会把错误的脚本路径传给PHP-FPM,导致无法找到文件、触发404。 - 冗余且不稳定的rewrite规则:用
if判断实现的重写逻辑可以被更安全稳定的try_files替代,Nginx的if指令在location块中使用存在不少已知的逻辑陷阱,非必要不建议使用。
修正后的配置
将你配置中原有的location ^~ /presskit块整体替换为以下内容即可:
location ^~ /presskit { index index.php; try_files $uri $uri/ /presskit/index.php$is_args$args; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } }
生效步骤
- 执行
nginx -t命令测试配置语法是否正确,返回syntax is ok、test is successful再进行下一步 - 执行
systemctl reload nginx重载Nginx配置,修改即可生效
内容的提问来源于stack exchange,提问作者Shay88
相关产品推荐
相关产品推荐

