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

.htaccess重写异常:部分URL被自动添加.php后缀而非移除

解决.htaccess URL重写异常问题

我来帮你捋清楚问题出在哪,再给你针对性的解决办法:你的第二个RewriteRule正则没有考虑到请求末尾带斜杠的情况(比如/account/servers/),同时第一个规则缺少必要限制,导致当第二个规则匹配失败时,第一个规则错误地把二级路径里的servers当成根目录下的请求,最终出现account/servers.php/这种异常重写结果。

直接替换成下面的.htaccess代码即可解决问题:

RewriteEngine On

# 处理根目录下的请求(比如 /contact → contact.php),仅当对应PHP文件存在且不是目录时生效
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-z]+)/?$ $1.php [NC,L]

# 处理account子路径,支持末尾带/或不带/的请求
RewriteRule ^account/([0-9a-zA-Z]+)/?$ account.php?$1 [NC,L]

给你拆解下修改的核心点:

  • 第一个规则新增两个条件:
    • %{REQUEST_FILENAME} !-d:确保请求的不是真实存在的目录,避免干扰正常目录访问
    • %{REQUEST_FILENAME}.php -f:只有当对应的xxx.php文件实际存在时才执行重写,防止无效请求触发错误重写
    • 正则调整为^/?([a-z]+)/?$:允许请求末尾带斜杠或不带,加上L标志保证匹配后立即停止,不会触发后续规则
  • 第二个规则的正则改为^account/([0-9a-zA-Z]+)/?$:不管访问/account/servers还是/account/servers/,都能正确匹配到servers参数并转发到account.php?servers,L标志同样避免后续规则干扰

修改后再访问/account/servers/,就能正常解析到account.php的参数,不会再出现异常重写的情况了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:36:03