2012-07-09 152 views
8

好吧,我已经做了大量的搜索,但仍找不到足以处理我的问题的具体内容。将所有通配符子域重定向到根域

现在我有一个DNS记录,将所有其他子域重定向到我的服务器。我在问什么是example.mydomain.com返回HTTP/1.1 301并重定向到mydomain.com

我很抱歉,如果这已被覆盖,我只是找不到足够的具体内容。

回答

14

使用RewriteCond匹配比mydomain.com其他领域和301重定向他们:

RewriteEngine On 
# If the domain (any domain) is not exactly mydomain.com... 
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC] 
RewriteRule (.*) http://mydomain.com/$1 [L,R=301,QSA] 

您还可以查看更多专为mydomain.com子域。上面的一个将匹配任何其他域。

# Match only subdomains of mydomain.com 
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC] 
RewriteRule (.*) http://mydomain.com/$1 [L,R=301,QSA] 
+0

这只能通过www。在开始? – JorgeLuisBorges 2014-07-15 10:40:03

+0

@JorgeLuisBorges不仅www。 - 它也匹配_any subdomain_' subdomain.mydomain.com'或者任何非完全是'mydomain.com'的东西。顶部的例子还会将'mydomain.org'重定向到'mydomain.com',而底部只匹配子域名,并且只会将'subdomain.mydomain.com'重定向到'mydomain.com'。 – 2014-07-15 10:59:09

+0

'RewriteRule(。*)http:/ /example.com/$1 [L,R = 301,QSA]产生traling斜线,例如'www.example.com'重定向到'example.com //'。 'RewriteRule(。*)http://example.com$1 [L,R = 301,QSA]'似乎是正确的。 – 2017-08-16 15:16:19

1

This article占地面积.htacces和ModRewrite重定向重定向到主域的任何其他DOMIN比主之一提出的任何要求。

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !www.newdomain.com$ [NC] 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] 
0

evan's blog,你可能会配置通配符您ServerAlias“*”如果你让Apache作为你的服务器端。在这种情况下,对子域的每次访问都将被重定向或路由到根域。

<Virtualhost *:80> 
VirtualDocumentRoot "/path/to/your/workspace/%1/public" 
ServerName vhosts.dev 
ServerAlias *.dev 
UseCanonicalName Off 
<Directory "/path/to/your/workspace/*"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 
</Virtualhost> 
0

在我来说,我需要排除像foo.bar.com>bar.com/page/foo我Apache文档在此发现:

RewriteCond %{HTTP_HOST} ^(.+)\.bar\.com$ [NC] 
RewriteCond %{HTTP_HOST} !www.bar.com$ [NC] 
RewriteRule ^(.*)$ http://bar.com/page/%1/$1 [L,R=301]