htaccess重定向到www,不包括子域名https和http

时间:2010-05-25 19:38:39

标签: mod-rewrite

所以这就是我目前所拥有的,我正在尝试将http://something.com重定向到http://www.something.com,但如果它的子域不做这样的事情,那么http://other.somethings.com将保持不变并且有条件基于https / http

目前有..

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

2 个答案:

答案 0 :(得分:2)

尝试此规则:

RewriteCond %{HTTP_HOST} =example.com
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这只会将请求重定向到主机 example.com 并保留HTTPS(如果已使用)。

答案 1 :(得分:0)

虽然有点单调乏味,但并不难。还有一个名为HTTPS的重写条件变量,即使你没有运行mod_ssl也可以安全使用。然后你链接两个RewriteCond检查,得到这样的东西:

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^something\.com$
RewriteRule ^(.*)$ https://www.something.com/$1 [R=301,L]

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

缺点是你现在正在将有问题的域硬编码到.htaccess中。我不知道如何在不对域进行硬编码的情况下使其工作。