我们拥有包含各种TLD的域名。
让我们使用example.com作为我们的主要URL,我们将example.biz,example.net,example.org重定向到example.com。
我们在.htaccess文件中有以下内容,并且效果非常好:
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
您注意到任何非www都将被重定向到www。
但是,我们刚刚添加了一个子域:str.example.com,为了使其可访问,我们必须注释掉上述规则。
我希望有人可以帮助我们编写将重定向的规则:
有几个案例可以说明我的意思:
非常感谢。
答案 0 :(得分:3)
这有点复杂,但它可以为您节省额外的重定向:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www|str)\. [NC,OR]
RewriteCond %{HTTP_HOST} !\.com$ [NC]
RewriteCond %{HTTP_HOST} (.*?)\.[A-Z]+$ [NC]
RewriteCond %1 ^(([^.]+)\.)?example$
RewriteCond %2 ^(str) [OR]
RewriteCond www ^(www)
RewriteRule ^ http://%1.example.com%{REQUEST_URI} [R=301,L]
请注意,它也只是希望您拥有一个TLD,因此example.co.uk
在此处不起作用。这不是你的一个例子,所以我没有试图解释它。
答案 1 :(得分:1)
请尝试以下规则:
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.[^/.]+$
RewriteCond %1 !^(www|str)$
RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.([^/.]+)$
RewriteCond %2 !=com
RewriteRule ^ http://%1.example.com%{REQUEST_URI} [L,R=301]