关于.htaccess Rewrite规则动态匹配语言路径的301重定向需求
修正后的Apache重定向规则
要实现将带动态语言路径的旧URL重定向到新域名的对应路径,你需要调整Rewrite规则以捕获语言路径分组,原规则的问题在于未定义捕获组导致$1为空值。以下是修正后的完整规则:
# 匹配olddomain.ch的请求 RewriteCond %{HTTP_HOST} ^olddomain\.ch$ # 捕获语言路径(de/fr/en),并匹配qahmkitd73结尾的路径 RewriteRule ^([a-z]{2})/qahmkitd73/$ https://newdomain.ch/$1/qahmkitd73 [NE,R=301,L]
关键修正点说明:
- 捕获语言分组:
RewriteRule的匹配模式^([a-z]{2})/qahmkitd73/$中,([a-z]{2})会捕获URL中的两位语言代码(对应de/fr/en),后续用$1引用这个捕获值。 - 简化条件判断:移除了多余的
RewriteCond %{REQUEST_URI},直接在RewriteRule中完成路径匹配,规则更简洁高效。 - 修正主机匹配:原规则中
HTTP_HOST写的是chezcamillebloch.ch,需改为目标旧域名olddomain.ch才能正确触发规则。 - 保留必要标记:
NE避免URL转义、R=301标记永久重定向(利于SEO)、L终止后续规则执行,这些标记保持不变。
扩展适配(可选):
如果语言路径可能包含更长的代码(比如zh-CN),可以将匹配模式调整为^([a-z-]+)/qahmkitd73/$,兼容带连字符的多段语言代码。
内容的提问来源于stack exchange,提问作者user1272597
相关产品推荐
相关产品推荐

