如何实现example.com/abc.html重写为example.com/abc?现有规则不生效怎么解决
你当前的规则仅实现了「无后缀请求内部映射到.html文件」的逻辑,没有处理「带.html后缀的请求跳转至无后缀路径」的流程,同时路径判断的写法存在兼容性问题,所以无法达到预期效果。
以下是可生效的完整配置:
RewriteEngine On # 处理带.html后缀的请求,301重定向到无后缀版本 RewriteCond %{THE_REQUEST} \s/+(.*?)\.html[\s?] [NC] RewriteRule ^ /%1 [R=301,L,NC] # 内部重写无后缀请求到对应的.html文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1.html -f RewriteRule ^(.*?)/?$ $1.html [L]
注意事项
- 需确认Apache已开启
mod_rewrite模块,且站点配置中AllowOverride参数设置为All,允许.htaccess文件生效 - 测试阶段可将配置中的
R=301改为R=302临时重定向,避免浏览器缓存错误的永久重定向规则,验证生效后再改回301 - 修改规则后需清空浏览器缓存再测试,避免原有缓存的重定向规则干扰结果
内容的提问来源于stack exchange,提问作者Md Aziz
相关产品推荐
相关产品推荐

