将子域重定向到除一个URL之外的主域

时间:2012-08-16 13:12:55

标签: .htaccess

您好我有一个主域名如下

主域名:http://www.sample.com/

子域名:http://dev.sample.com/

现在如果有任何人访问http://dev.sample.com/它需要重定向到http://www.sample.com/ 所以我在我的子域中添加了以下代码它非常好用

RewriteCond %{HTTP_HOST} !www.sample.com.com$ [NC]

RewriteRule ^(.*)$ http://www.sample.com.com/$1 [L,R=301]

但是,如果有子域名,则可以访问以下网址 http://dev.sample.com/data 它不应该重定向到主域。它应该保留在该子域页面上。有人有想法吗?

2 个答案:

答案 0 :(得分:2)

请尝试以下规则:

RewriteCond %{HTTP_HOST} ^dev\.sample\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/?data
RewriteRule ^(.*)$ http://www.sample.com/$1 [L,QSA,R=301]

答案 1 :(得分:1)

试试这个:

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

但是,这会阻止所有带有/ URI开头的URL。因此,如果您有http://blog.sample.com/data,它也可以在没有重写的情况下解析它。如果这是一个问题,你可能会变得更复杂......在此规则之后添加此内容以捕获所有非开发子域:

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

现在,如果第一个条件设置未满足,则第一个规则不会运行,因此请检查以确保您只使用/ data为dev和www服务。