使用.htaccess将任何子域重定向到主域

时间:2015-04-19 22:03:26

标签: apache .htaccess mod-rewrite redirect

我尝试将sub.example.com/login的任何直接尝试重定向到example.com/login的原始域/ uri,以及我已经阅读过的问题数量对于这个问题,它表面看起来很容易......

我不知道是否有一些事情超出了预期的结果,但我的 .htaccess 文件中有以下规则,但我和#39; m仍然可以在不重定向的情况下访问sub.example.com/login

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

实际上,为了完全清楚,这里是我的整个 .htaccess 文件内容。也许其他人可以看到我错过的错误。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

# redirect subdomain login attempts to main domain
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com/login$  [NC]
RewriteRule ^(.*)$ http://example.com/login$1        [L,R=301]

2 个答案:

答案 0 :(得分:1)

放置重定向子域登录重写条件&在RewriteBase行之后的规则。这应该有助于解决您的问题。

答案 1 :(得分:0)

RewriteEngine On
RewriteBase /

# Redirect all subdomains to example.com
RewriteCond %{HTTP_HOST} !^(.*)\.example\.com$ [NC]
# Redirect only bar & foo subdomains to example.com
#RewriteCond %{HTTP_HOST} !^(bar|foo)\.example\.com$ [NC]
RewriteRule ^ http://example.com/ [L,R]