关于.htaccess中旧域名分场景重定向的规则实现咨询
.htaccess中旧域名分场景重定向的规则实现咨询
嘿,这个需求完全可以通过调整.htaccess里的Rewrite规则顺序和匹配逻辑来实现!核心思路就是先处理特殊场景(旧域名根路径),再处理通用场景(带任意路径的情况),因为Apache的Rewrite规则是从上到下依次匹配的,把特殊规则放在前面就能优先触发。
具体的规则代码我帮你调整好了,直接替换你原来的代码就行:
# 先匹配旧域名的根路径(无任何后缀) RewriteCond %{HTTP_HOST} ^oldurl\.org$ [OR] RewriteCond %{HTTP_HOST} ^www\.oldurl\.org$ [OR] RewriteCond %{HTTP_HOST} ^oldurl\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.oldurl\.com$ RewriteRule ^$ https://newurl.com/the/old/page [R=301,L] # 再匹配旧域名带任意路径的情况 RewriteCond %{HTTP_HOST} ^oldurl\.org$ [OR] RewriteCond %{HTTP_HOST} ^www\.oldurl\.org$ [OR] RewriteCond %{HTTP_HOST} ^oldurl\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.oldurl\.com$ RewriteRule (.*) https://newurl.com/$1 [R=301,L]
我给你拆解下每部分的作用:
- 第一组规则里,
RewriteRule ^$专门匹配空路径(也就是直接访问oldurl.com/或者oldurl.org的情况),匹配上后就重定向到你指定的新站特定页面https://newurl.com/the/old/page - 第二组规则是通用场景,
RewriteRule (.*)会匹配所有带路径的请求(比如oldurl.com/anything-else),然后把捕获到的路径部分$1直接拼到新域名后面,实现oldurl.com/xxx跳转到newurl.com/xxx的效果
这里还有几个小提醒要注意:
- 测试阶段建议先用
R=302临时重定向,避免浏览器缓存301永久重定向导致测试结果不准,等所有规则验证没问题后再改成R=301 - 确保你的服务器已经开启了
mod_rewrite模块,同时旧站点的Apache配置里AllowOverride设置为All或者FileInfo,这样.htaccess里的规则才能生效 - 要把代码放在旧站点根目录的.htaccess文件里哦
备注:内容来源于stack exchange,提问作者artmem
相关产品推荐
相关产品推荐

