我最近从windows服务器切换到godaddy,linux,cpanel服务器。我没有使用htaccess的goos,我认为这应该是一件相当简单的事情,但我无法做到。
我的SSL证书设置为在以下网站上运行:https:www.mydomain.com但不适用于(非www网站)。
我希望所有流量都转到https:example.com/any-folder/any-file重定向到https:www.example.com/any-folder/any-file
所有流量到http:example.com/any-folder/any-file重定向到http:www.example.com/any-folder/any-file
感谢您提供的任何帮助。 这是我的htaccess文件:(所有请求都被重定向到https ....我很困惑)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
答案 0 :(得分:0)
出现这种行为的原因是
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
会将所有缺少www.
的请求重写为http://www.example.com/$1
。也适用于HTTPs请求。此重写将导致新请求,因为它是重定向,您使用[R]
定义的内容。
之后,下一个规则
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
会将非HTTP的所有请求重定向到https://www.example.com/$1
。即使原始请求不应该是HTTP。
你必须这样做:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]