如何将特定子文件夹的非www和www域重定向到root?

时间:2013-01-28 20:01:13

标签: apache .htaccess mod-rewrite

我有3个域名:

www.domain1.com
www.domain2.com
www.domain3.com

它们共享相同的子文件夹网址:

www.domain1.com/sub1/sub2
www.domain2.com/sub1/sub2
www.domain3.com/sub1/sub2

我需要将sub2及其下方的所有内容重定向到该网站的主页:

www.domain1.com/sub1/sub2  --> www.domain1.com
domain1.com/sub1/sub2 --> www.domain1.com


www.domain2.com/sub1/sub2  --> www.domain2.com
domain2.com/sub1/sub2 --> www.domain2.com


www.domain3.com/sub1/sub2  --> www.domain3.com
domain3.com/sub1/sub2 --> www.domain3.com

这是我到目前为止所拥有的:

RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain2\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain3\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.domain3\.com$ [NC]
RewriteRule ^sub1/sub2(.*)$ / [NC,L,R=301]

问题:
它仅适用于www.domain1.com, www.domain2.com, www.domain3.com

对于没有“www”的网址,它不起作用。所以不起作用:domain1.com/sub1/sub2

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?(domain1|domain2|domain3)\.com
RewriteCond %{REQUEST_URI}  ^/sub1/sub2/?  [NC]
RewriteRule .*   http://%{HTTP_HOST}/     [R=301,L]

使用此方案重定向任何网址

http://www.domain1.com/sub1/sub2http://domain1.com/sub1/sub2

要相应的根,请删除细分/sub1/sub2

我认为/sub1/sub2是固定字符串。如果不是,请替换

RewriteCond %{REQUEST_URI}  ^/sub1/sub2/?  [NC]

RewriteCond %{REQUEST_URI}  ^/[^/]+/[^/]+/?  [NC]

必须保留路径/sub1/sub2/中包含2个文件夹的URL方案才能使规则生效。