.htaccess重写规则配置:非PHP后缀缺失文件不跳转至index.php
.htaccess 重写规则修正方案
原有配置问题
原有规则存在逻辑顺序错误:第一条规则会匹配所有不存在的文件、目录直接跳转至index.php,第二条判断.php后缀的规则永远不会被触发,因此所有缺失资源(包括.js、.map等非PHP文件)都会被强制跳转。
修正后配置
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} (\.php$|^[^\.]+$) [NC] RewriteRule ^ index.php [QSA,L]
规则逻辑说明
- 前两个条件过滤请求:仅当请求路径既不是有效目录、也不是有效文件时,才进入后续判断
- 第三个条件仅命中两类请求:以.php为后缀的请求、无任何文件后缀的路径请求
- 仅命中规则的请求才会重定向到index.php,缺失的.js、.map、.css等带其他后缀的资源会直接返回404,不会执行跳转
效果验证
完全匹配需求示例的执行结果:
/helloworld.php:符合.php后缀规则,重定向到index.php/hello/world:无后缀路径,重定向到index.php/assets/js/missingfile.js:带.js后缀,无匹配规则,直接返回404
内容的提问来源于stack exchange,提问作者hcker2000
相关产品推荐
相关产品推荐

