如何将旧国别域名重定向到带语言子目录的新.com域名
你之前编写的重定向规则没有将原访问的子路径拼接到新目标地址后,所以所有请求只会跳转到example.com/de/根目录,无法实现子路径的对应跳转。
正确重定向规则(Apache mod_rewrite 适用)
Options +FollowSymLinks RewriteEngine On RewriteBase / # 德语域名 example.de 全局重定向 RewriteCond %{HTTP_HOST} ^example\.de$ [NC] RewriteRule ^(.*)$ https://example.com/de/$1 [R=301,L,NE] # 意大利语域名 example.it 全局重定向 RewriteCond %{HTTP_HOST} ^example\.it$ [NC] RewriteRule ^(.*)$ https://example.com/it/$1 [R=301,L,NE]
规则说明
$1会提取RewriteRule捕获到的原请求完整路径,实现example.de/xxx/yyy到example.com/de/xxx/yyy、example.it/xxx/yyy到example.com/it/xxx/yyy的一对一映射NE标识用于避免原链接中的特殊字符(如查询参数?、锚点#、编码符%等)被不必要转义,保证跳转后参数功能正常NC标识匹配域名时忽略大小写,避免大小写差异导致规则不生效L标识匹配到当前规则后不再执行后续重写规则,避免规则冲突
测试注意事项
调试阶段建议先将R=301改为R=302使用临时重定向测试,确认规则完全符合预期后再改回301永久重定向。301重定向会被浏览器长期缓存,未调试完成就使用301会导致缓存的错误规则干扰后续测试,测试时建议使用浏览器无痕模式或提前清除浏览器缓存。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

