htaccess根据TLD重写URL

时间:2016-08-14 22:11:29

标签: apache .htaccess redirect mod-rewrite

在我的网站上,我有兴趣将论坛从子目录移动到子域。论坛目前位于example.com/forums,我想将其移至forums.example.com。移动后,我想使用htaccess将所有论坛流量重定向到子域名,但问题是我的网站有两个TLD,.com域和.net域。

我目前正在尝试使用此方法重定向流量:

RewriteCond %{HTTP_HOST} !=forums.example.net
RewriteRule ^forums(/(.*))?$ https://forums.example.net/$2 [L,R=301]

RewriteCond %{HTTP_HOST} !=forums.example.com
RewriteRule ^forums(/(.*))?$ https://forums.example.com/$2 [L,R=301]

这只有一半的作品。无论我访问哪个TLD,它总是会将我重定向到forums.example.net,即使我是从example.com/forums访问,在这种情况下我希望它转到forums.example.com。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以将此单一规则用作 forums/.htaccess 中的首要规则,而不是顶级.htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.(?:com|net))$ [NC]
RewriteRule ^.*$ http://forums.%1/$0 [L,R=301,NE]

对于root .htaccess,请将此规则用作您的第一条规则

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.(?:com|net))$ [NC]
RewriteRule ^forums(/.*)?$ http://forums.%1$1 [NC,L,R=301,NE]

答案 1 :(得分:1)

请使用以下规则进行正确的重定向,以便按需使用。

Rewritengine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^forums$ http://forums.example.com/? [L,R=301]
RewriteCond %{HTTP_HOST} ^example\.net$
RewriteRule ^forums$ http://forums.example.net/? [L,R=301]