所以这就是我目前所拥有的,我正在尝试将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]
答案 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中。我不知道如何在不对域进行硬编码的情况下使其工作。