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

使用.htaccess移除php文件后缀时带尾斜杠URL报500错误如何解决

问题原因

你遇到的500错误本质是重写规则逻辑存在疏漏,当访问带尾部斜杠的路径/page/时,原规则会错误地将其拼接为/page/.php,触发Apache的内部重写死循环,最终返回500错误。

修复后的完整配置

# 移除PHP文件后缀
RewriteEngine On

# 1. 把带.php的请求跳转到无后缀的路径
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R=301]

# 2. 适配带尾部斜杠的无后缀路径,匹配到对应php文件时先移除斜杠
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1 [NC,L]

# 3. 无后缀路径映射到对应php文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)$ $1.php [NC,L]

关键改动说明

  • 移除了原配置中冗余的重复RewriteEngine On声明,避免规则执行冲突
  • 新增了尾部斜杠的适配逻辑:先判断带斜杠的路径去掉斜杠后是否存在对应PHP文件,存在的话先去除尾部斜杠再做映射,避免出现/xxx/.php这类无效路径
  • 增加了目录存在性判断RewriteCond %{REQUEST_FILENAME} !-d,避免影响真实存在的目录访问
  • 调整了PHP文件存在性的判断逻辑,用DOCUMENT_ROOT做绝对路径校验,减少重写误判

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:09:04