我必须将我的域名从 http 重定向到 https 。在我的htaccess中,我已经。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
此代码段重定向所有内容,而不是" www"到" www"。
当我将其更改为
时RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
结果是:
http://www.example.com/folder/page.php
becomes
Location => https://www.example.com/folder/page.php
精细!
https://example.com/folder/page.php
becomes
https://www.example.com/folder/page.php
精细!
但
http://example.com/folder/page.php
becomes
Location => https://example.com/folder/page.php
但必须
Location => https://www.example.com/folder/page.php
如何解决这个问题?
我知道所有这些重定向:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
但我只需要一个重定向而不是两个301。
答案 0 :(得分:0)
您可以使用以下规则
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ https://www.%1%{RERUEST_URI} [NE,L,R=301]
在测试之前清除浏览器缓存。
答案 1 :(得分:0)
我在这里找到了解决方案:
https://webmasters.stackexchange.com/questions/84757/htaccess-redirect-non-www-to-www-with-ssl-https
@ w3dk的第二个答案正在发挥作用。
ToolbarItem
您的网站需要通过SSL访问www和非www,才能触发.htaccess重定向。
使用letsencrypt可以获得这2个证书。