将所有通配符子域重定向到根域

时间:2012-07-09 02:57:48

标签: apache .htaccess mod-rewrite

好的,我已经做了相当多的搜索,但仍然找不到足够的东西来处理我的问题。

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

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

4 个答案:

答案 0 :(得分:16)

使用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]

答案 1 :(得分:1)

This article包含.htaccess和Mod_Rewrite,用于将除主要重定向之外的任何主干的请求重定向到主域。

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

答案 2 :(得分: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>

答案 3 :(得分:0)

就我而言,我需要像foo.bar.com&gt;这样的规则。 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]