.htaccess 301基于TLD重定向

时间:2013-12-05 12:03:21

标签: apache .htaccess mod-rewrite redirect http-status-code-301

我们正在将当前网站从多域配置切换为单个域,多文件夹格式。即。

.co.uk/<uri>正在变为.com/en-gb/<uri>

.com/<uri>正在变为.com/en-us/<uri>

我希望我能够通过一些精心设计的.htaccess规则来处理这个问题,但我不确定我需要实现的代码。你能帮忙吗?

(PS,我把实际的域名留空了,因为我们只需要测试TDL,而不是整个域 - 尽管原始域需要保持不变,只有TLD发生变化 - 即{ {1}}会重定向到whatever.co.ukwhatever.com/en-gb/会重定向到whatever2.co.uk,而whatever2.com/en-gb/会重定向到whatever.com

1 个答案:

答案 0 :(得分:2)

将以下指令添加到.htaccess:

RewriteCond %{HTTP_HOST} (.+)\.co\.uk$
RewriteRule (.*) http://%1.com/en-gb/$1 [R=301,L,QSA]

RewriteCond %{HTTP_HOST} \.com$
RewriteCond %{REQUEST_URI} !^/(en-us|en-gb)/
RewriteRule (.*) /en-us/$1 [R=301,L,QSA]

如果您有这么多域名TLD,您可能希望使用RewriteMap来避免重复每个TLD的第一条规则,RewriteMap会将TLD映射到Uri字符串(例如:.co.uk到en-gb) ,