编写.htaccess 301重定向正则表达式遇到问题求助
.htaccess 301重定向实现方案
以下是针对需求编写的mod_rewrite规则,分三步实现所有要求:
RewriteEngine On RewriteBase / # 1. 替换任意位置的连续连字符(--)为单个(-),循环处理直到所有连续连字符都被替换 RewriteRule ^(.*)--(.*)$ $1-$2 [N,R=301,L] # 2. 移除所有以数字开头、后跟连字符的路径段前缀(如/234234-xxx 转为 /xxx),循环处理多个此类前缀 RewriteRule ^(\d+-)(.*)$ $2 [N,R=301,L] # 3. 删除URL末尾的.html后缀 RewriteRule ^(.*)\.html$ $1 [R=301,L]
规则细节说明
- 连续连字符替换:
N标志会让规则循环执行,直到URL中没有--为止,确保不管有多少个连续连字符都能合并成单个-。 - 数字前缀移除:匹配路径开头的数字+连字符组合,直接保留后续内容,同样通过
N标志处理URL中多个此类前缀段。 - .html后缀删除:精准匹配URL末尾的
.html,将其替换为空,完成后缀清理。
注意事项
- 确保服务器已启用
mod_rewrite模块。 - 测试阶段建议先用
R=302临时重定向,确认规则生效后再改为R=301永久重定向,避免浏览器缓存错误规则。
内容的提问来源于stack exchange,提问作者Mohammad J
相关产品推荐
相关产品推荐

