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

如何使用.htaccess移除URL中两层.php后缀并实现重定向

.htaccess移除多段路径.php后缀配置修复方案

现有代码核心问题

  • 规则顺序颠倒:内部无后缀转.php的重写规则放在了带.php跳转无后缀的外部重定向规则之前,会导致带.php的请求先被内部重写,跳转逻辑无法触发
  • 重定向规则仅匹配单层级.php文件,没有覆盖路径中存在多段.php后缀的场景,无法实现products.php/rss_feed.php跳转到products/rss_feed的需求

修正后完整配置

<IfModule mod_rewrite.c>
RewriteEngine on

# 全局处理所有带.php后缀的地址,递归移除所有路径段的.php后缀
RewriteCond %{THE_REQUEST} \.php [NC]
RewriteRule ^(.+?)\.php(/.*)?$ $1$2 [NC,R=301,L]

# 首页index.php单独跳转
RewriteRule ^index\.php$ http://localhost/pureherb/ [NC,R=301,L]

# 内部重写:无后缀地址映射到对应.php文件,排除真实存在的文件和目录
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)(/.*)?$ $1.php$2 [NC,L]
</IfModule>

规则说明

  • 优先执行外部重定向,匹配所有带.php后缀的请求,递归去掉每一段路径的.php后缀,两层.php后缀的地址会直接跳转到全路径无后缀版本
  • 调整内部重写规则,支持多层路径映射,无后缀的products/rss_feed会被内部映射到实际的products.php/rss_feed.php文件,保证访问无后缀地址可以正常加载资源

提示:测试阶段建议将重定向规则中的R=301改为R=302,避免浏览器缓存永久重定向规则导致调试异常,确认规则生效后再改回R=301。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:12:01