.htaccess重定向结果不符合预期,请求修正规则协助
解决多语言站点目录到独立域名的重定向问题
你的.htaccess规则问题很明确:直接拼接%{REQUEST_URI}会把原URL里的语言目录前缀(比如/sv)也带到新域名里,导致出现example.se/se这种多余路径。
把规则改成下面这样就能解决:
<IfModule mod_rewrite.c> RewriteEngine on # 匹配主域名(支持带/不带www,不区分大小写) RewriteCond %{HTTP_HOST} ^(www\.)?nofairytales\.nl$ [NC] # 匹配以/sv开头的请求路径,捕获前缀后的内容 RewriteCond %{REQUEST_URI} ^/sv(/.*)?$ [NC] # 去掉/sv前缀,将剩余路径拼到新域名后 RewriteRule ^sv(/.*)?$ http://www.nofairytales.se$1 [L,R=301] </IfModule>
关键修改说明:
- 把模块判断从
mod_headers.c改成mod_rewrite.c——毕竟我们用的是URL重写规则,属于mod_rewrite模块 RewriteRule里用^sv(/.*)?$匹配路径,捕获/sv后面的所有内容(包括空路径),用$1引用这部分内容拼到新域名后,彻底去掉多余的语言目录前缀- 如果是测试阶段,建议把
R=301改成R=302(临时重定向),确认规则生效后再换回301(永久重定向,更利于SEO)
如果还有其他语言需要重定向,比如要把nofairytales.nl/se/post转到nofairytales.se/post,直接复制这套规则,把sv换成se,域名对应调整即可。
内容的提问来源于stack exchange,提问作者GerrieM
相关产品推荐
相关产品推荐

