贝利信息

PHP子目录访问404怎么解_PHP子目录404访问修复【方法】

日期:2026-01-19 00:00 / 作者:看不見的法師
PHP子目录404主因是Web服务器配置错误:Apache需启用AllowOverride All和mod_rewrite并正确设置RewriteBase;Nginx需显式配置location块、正确使用alias/root及SCRIPT_FILENAME参数。

PHP子目录访问返回404,大概率不是PHP本身的问题,而是Web服务器(Apache或Nginx)未正确识别该子目录为可访问路径,或重写规则干扰了路由。直接看配置和常见断点。

Apache:检查.htaccess是否被禁用或失效

很多PHP项目(如Laravel、ThinkPHP)依赖.htaccess做URL重写,但Apache默认可能关闭AllowOverride,导致子目录下规则不生效,请求直接404。

Nginx:子目录location匹配缺失或优先级错乱

Nginx不会自动读取.htaccess,所有路由逻辑靠location块定义。子目录404,通常因为没配对应location,或try_files链没兜底到index.php

PHP-FPM + Nginx:SCRIPT_FILENAME指向错误

即使Nginx把请求转给了PHP-FPM,如果SCRIPT_FILENAME构造错了,PHP找不到文件,也会返回404(而不是500),现象就是子目录下所有PHP脚本都打不开。

路径权限与DocumentRoot边界

Web服务器只服务DocumentRoot(Apache)或root(Nginx)声明的目录及其子目录。如果子目录在DocumentRoot之外,或父目录无执行(x)权限,也会404。

子目录404最常卡在重写规则失效或SCRIPT_FILENAME拼错这两处,尤其是Nginx用alias却沿用$document_root的惯性写法——这里几乎必出问题,调试时优先盯住这一行。