使用htaccess将所有流量从子域重定向到域,而不维护目录结构

时间:2010-04-08 03:54:59

标签: .htaccess redirect subdomain

大多数示例显示如何将所有子域流量重定向到主域,从而维护目录结构。我实际上不想要这个。我想将所有子域流量(站点正在消失)重定向到主域。这不起作用:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/ [R=301,L]

如果你这样做会发生什么:

http://sub.newdomain.com/some/path/

你明白了:

http://www.newdomain.com/some/path/

我希望一切都能找到根源。

3 个答案:

答案 0 :(得分:1)

子域名的apache配置文件中的简单301重定向怎么样?

要重定向域中的所有文件,请在您的域中使用此文件 .htaccess文件,如果你在unix Web服务器上:

redirectMatch 301 ^(.*)$ http://www.domain.com 
redirectMatch permanent ^(.*)$ http://www.domain.com

和另一个例子

如果您需要将http://mysite.com重定向到 http://www.mysite.com你已经启用了mod_rewrite 您可以将服务器放在.htaccess文件中:

编辑:如果你想使用它,只需从上面第一个选项不起作用的示例链接中的规则中删除$ 1.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ http://www.example.com/ [R=permanent,L]

或者这个:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/ [R=301,L]

这些摘录来自here

答案 1 :(得分:1)

如果要排除所有尾随信息(例如目录结构,参数),只需在目标网址末尾添加问号。

在您的实例中,它只会更新为:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/? [R=301,L]

答案 2 :(得分:0)

这会处理通配符子域,以及客户端在子域

之前放置www的情况
#  wildcard.domain.com  ->  www.domain.com/wildcard
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteCond %1 !^(www)$ [NC]
RewriteCond %1 !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/%1/ [R=301,L]

#   www.wildcard.domain.com   ->   www.domain.com/wildcard
RewriteCond %{HTTP_HOST} ^(www\.(.*))\.domain\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/%2 [R=301,L]