htaccess的重定向到www排除子域HTTPS和HTTP
问题描述:
因此,这是目前我有,我想重定向到http://something.com但http://www.something.com如果它的一个子做这样的事情,所以http://other.somethings.com将保持不变,有条件的基础上HTTPS/HTTPhtaccess的重定向到www排除子域HTTPS和HTTP
目前有..
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
答
试试这个规则:
RewriteCond %{HTTP_HOST} =example.com
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
如果它使用这只会将请求重定向到主机example.com并保持HTTPS。
答
这并不难,虽然这是一个有点乏味。还有一个名为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。我不知道有什么方法可以在不对域进行硬编码的情况下工作。
我很好奇......你能解释一下'^(s)|'吗? – eyelidlessness 2010-05-26 00:14:34
@eyelidlessness:* HTTPS *的值是“on”或“off”。所以'%{HTTPS} s'可以是'ons'或'offs'。如果它是'ons',模式'^ on(s)|'匹配,并且第一组的匹配是's'。否则,如果它处于“off”状态,则取空分支,第一组的匹配为空。 – Gumbo 2010-05-26 07:06:44
哦,很酷。我没有注意到'%{HTTPS} s'末尾的's',这很有道理。谢谢! – eyelidlessness 2010-05-26 18:57:56