如何修正301重定向问题:将旧站带参数链接定向至新站首页
修正旧站带参数链接的301重定向配置
我拥有两个网站:
- 旧站:https://www.old.example/en/
- 新站:https://new.example/en
谷歌搜索控制台报告旧站存在约80个带参数的链接出现重定向异常,例如:
- https://www.old.example/en/?p=41310
- https://www.old.example/en/?p=45659
- https://www.old.example/en/?p=72785
当前旧站的.htaccess仅配置了以下代码:
Redirect 301 / https://new.example/
该配置会将上述带参数的旧链接重定向至类似https://new.example/en/?p=62692的地址,但需求是让这类带参数的链接始终重定向到新站首页https://new.example/en。
解决方案
原Redirect指令会默认保留请求的查询字符串,因此需要改用mod_rewrite规则来实现丢弃参数的重定向。替换原有.htaccess配置为以下内容:
RewriteEngine On # 匹配旧站/en路径下所有带参数的请求,重定向到新站首页并清空参数 RewriteCond %{QUERY_STRING} .+ RewriteRule ^en/?$ https://new.example/en? [R=301,L] # 处理旧站其他路径的重定向(保持根路径跳转逻辑) RewriteRule ^ https://new.example/ [R=301,L]
规则说明
RewriteEngine On:启用Apache的重写引擎RewriteCond %{QUERY_STRING} .+:匹配任何带有查询字符串(即URL中带?及后续参数)的请求RewriteRule ^en/?$ https://new.example/en? [R=301,L]:匹配旧站的/en或/en/路径,重定向到新站首页,末尾的?会强制清空查询字符串- 最后一条规则处理旧站其他不带参数或非
/en路径的请求,保持原有的根路径重定向逻辑
内容的提问来源于stack exchange,提问作者cosiek
相关产品推荐
相关产品推荐

