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

.htaccess配置Rewrite规则去除.htm后缀不生效是什么原因?

.htaccess去除.htm后缀规则不生效原因说明

核心失效原因

  • 匹配规则不符合.htaccess的路径匹配逻辑

Apache在处理目录级.htaccess的RewriteRule规则时,会自动裁剪掉请求路径的前导斜杠/以及当前目录的路径前缀后再进行正则匹配,你原有规则以^/开头,永远无法命中任何请求,因此规则完全不会触发。

  • 正则覆盖范围过窄
    原有规则的正则^/([^./]+)\.htm$仅能匹配根目录下、文件名不含小数点的.htm文件,子目录下的.htm文件、文件名带特殊字符的.htm文件都无法匹配,覆盖场景非常有限。

可用规则逻辑说明

你提供的可正常运行的规则解决了上述两个问题:
RewriteRule ^(.*)\.htm$ $1/ [R=301,L]

  • 没有添加前导斜杠,符合.htaccess的路径匹配规则,可以正常命中请求
  • 正则.*支持匹配任意层级路径、任意文件名格式的.htm后缀请求,覆盖所有需要重定向的场景
  • 搭配你原有配置的RewriteCond %{REQUEST_FILENAME} !-f条件,逻辑合理,不会影响真实存在的.htm静态文件的访问。

额外注意事项

  • 该重定向规则需要放在WordPress默认的固定链接重写规则之前,避免被WordPress原生规则优先拦截导致失效
  • 修改完.htaccess后需要清空浏览器缓存和站点缓存,301属于永久重定向,会被浏览器长期缓存,旧的缓存结果会导致测试时看起来规则未生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:45:03