<http:to =“”http:=“”www。=“”>和<https:to =“”https:=“”www。=“”> </https:> </http:>

时间:2012-06-04 22:20:19

标签: .htaccess mod-rewrite

没有太多可说的,因为我想尝试解释它。

有没有办法创建一个执行这些操作的.htaccess:

  

example.com&gt; http:// www。 example.com

     

http:// example.com&gt; http:// www。 example.com

     

https:// example.com&gt; https:// www。 example.com

我的意思是:

  1. 如果是http,则转到http + www
  2. 如果它的https转到https + www
  3. 如果没有位于域的前面,则会转到http + www
  4. 我试图让它与其他代码一起使用:

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

    该代码ALMOST正常工作,唯一错误关于它,是当它的 https:// example.com重定向到 http: // www。 example.com

2 个答案:

答案 0 :(得分:2)

用以下代码替换您的代码:

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

答案 1 :(得分:2)

如果这不起作用,您可以为https和http:

编写单独的规则
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.xplayrs.com/$1  [L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.xplayrs.com/$1  [L]