大多数示例显示如何将所有子域流量重定向到主域,从而维护目录结构。我实际上不想要这个。我想将所有子域流量(站点正在消失)重定向到主域。这不起作用:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/ [R=301,L]
如果你这样做会发生什么:
http://sub.newdomain.com/some/path/
你明白了:
http://www.newdomain.com/some/path/
我希望一切都能找到根源。
答案 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]