.htaccess域名301重定向与排除

时间:2012-10-02 20:29:07

标签: .htaccess mod-rewrite redirect dns

我设法用htaccess创建一个基本规则集,用301重定向用户输入的所有请求* .domain.com

所以:* .domain.com请求重定向到www.home.domain.com

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

现在我正在尝试修改它并使用302重定向所有原先没有* .home.domain.com但仍继续保留先前条件的请求

我已经阅读了一些回复,但我对正则表达式语法感到困惑,因为我的案例给出了类似的回复。

更新:感谢Jon Lin的回复,还有一个澄清

从一开始就是我的错,我在阅读你的回复时就理解了

我想要所有人:

*.home.domain.com >> 301 >> www.home.domain.com
not *.home.domain.com >> 302 >> www.google.com (for example)

更新2:

这会有用吗?

RewriteCond %{HTTP_HOST} ^(.*)\.home\.domain\.com$ [NC]
RewriteCond $1 !^www\.$ [NC]
RewriteRule ^(.*)$ http://www.home.domain.com [R=301]

RewriteCond %{HTTP_HOST} !^(.*)\.home\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.google.com [L,R=302]

1 个答案:

答案 0 :(得分:0)

尝试:

# all : *.domain.com requests redirect to www.home.domain.com
RewriteCond %{HTTP_HOST} ^[^.]+\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.home.domain.com/$1 [L,R=301]

# all requests that didn't have originally the *.home.domain.com
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.home.domain.com/$1 [L,R=302]