
当在本地开发环境中新增 about.php 等 php 文件却始终返回“404 not found”错误时,问题通常并非文件缺失,而是 web 服务器未正确识别或路由该请求——尤其在使用 apache 的 .htaccess 重写规则、虚拟主机配置或 url 重写机制的项目中。
该错误看似是文件路径问题,实则多为服务器端路由控制逻辑所致。从你提供的信息可确认以下关键事实:
✅ 最可能的原因是:项目启用了 URL 重写(RewriteEngine),且规则未放行原始 .php 文件请求。
例如,.htaccess 中可能存在类似以下规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]该配置会将所有非真实文件/目录的请求统一转发给 index.php(常用于 MVC 路由)。但若 about.php 确实存在,理论上应被 !-f 条件排除而直接访问——除非:
? 快速验证与解决步骤:
检查 .htaccess 文件是否存在并生效
在项目根目录下查找 .htaccess,临时重命名为 .htaccess.bak,刷新 http://localhost:84/Projects/Calculator/Calculator/about.php。若此时可访问,即确认是重写规则导致。
修正重写规则(推荐)
若需保留友好 URL,应在重写前显式放行真实 PHP 文件:
RewriteEngine On
# 允许直接访问 .php 文件
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^ - [L]
# 其他路由(仅处理不存在的文件/目录)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]验证服务器配置(XAMPP/WAMP 用户)
确保 Apache 的 mod_rewrite 已启用(XAMPP 控制面板 → Apache → Config → httpd.conf,确认 LoadModule rewrite_module modules/mod_rewrite.so 未被注释,且对应
⚠️ 注意:不要依赖“复制 index.php 改名”的临时方案(如答案所提),它虽可能绕过某些逻辑判断,但未触及根本问题,且易引发
后续维护混乱。
立即学习“PHP免费学习笔记(深入)”;
✅ 总结:PHP 文件 404 的核心排查顺序应为:
① 检查 .htaccess 是否存在及规则逻辑;
② 验证 Apache mod_rewrite 与 AllowOverride 配置;
③ 审查虚拟主机或路由入口(如 index.php 是否接管了全部请求);
④ 最后才考虑文件系统层面问题(权限、大小写、隐藏字符等)。
通过以上结构化排查,可精准定位并永久解决此类“文件存在却 404”的典型开发环境问题。