2012-07-09 179 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]