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

htaccess重写规则问题:URL路径匹配错误致文件判断异常

Apache重写规则:仅匹配对应存在的PHP文件

问题根源

你的规则中使用的%{REQUEST_FILENAME}会被Apache的PATH_INFO解析逻辑干扰。当请求example.com/blog/a/test这类带多级路径的URL时,Apache会先将blog识别为已存在的blog.php文件,把/a/test当作该文件的附加路径(PATH_INFO),导致%{REQUEST_FILENAME}.php最终指向blog.php而非blog/a/test.php,错误触发重写条件。

修复后的规则

替换原有规则为以下内容:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+)$ $1.php [L]

规则说明

  • %{DOCUMENT_ROOT}/$1.php:将请求URI($1对应RewriteRule匹配到的完整路径部分)与网站根目录拼接,生成要检查的PHP文件的绝对路径,直接验证该文件是否存在。
  • 这样处理后,请求blog/a/test时会检查DOCUMENT_ROOT/blog/a/test.php是否存在,而非错误地检查blog.php,完全符合你“仅对应文件存在时才重写”的需求。

补充说明

你之前添加的AcceptPathInfo Off无效,是因为该指令仅控制是否允许文件后附加PATH_INFO,无法解决重写条件中路径判断逻辑的问题,因此对你的场景没有帮助。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:12:12