htaccess RewriteRule重定向异常:URL冗余内容未正确移除咨询
URL重定向规则错误分析与修复
你的问题出在这两点:
- 正则仅匹配了URL末尾的数字段,没覆盖需要移除的
cid_855_部分,导致这部分原路径被保留 - 替换路径
/lid/$1是在当前匹配的位置后追加,而非替换整个目标路径段
举个例子,原请求路径是/lid/cid_855_1404172,你的规则([^_]+)$只匹配到结尾的1404172,替换时会把匹配到的部分换成/lid/1404172,最终路径就变成了/lid/cid_855_/lid/1404172,这就是多余部分残留的原因。
正确的重定向规则
在.htaccess里添加以下规则(确保已开启RewriteEngine):
RewriteEngine On RewriteRule ^lid/cid_\d+_(\d+)$ /lid/$1 [R=301,L]
规则说明:
^lid/cid_\d+_(\d+)$:从路径开头匹配/lid/cid_,紧接着匹配任意长度数字(对应855这类内容),再匹配下划线,最后捕获末尾的数字串(也就是你想要保留的1404172)到分组1[R=301,L]:R=301指定永久重定向(利于SEO),L表示这条规则执行后不再处理后续规则,避免冲突
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

