.htaccess 301使用www将http重定向到https

.htaccess 301使用www将http重定向到https,.htaccess,redirect,https,http-status-code-301,.htaccess,Redirect,Https,Http Status Code 301,我必须将我的域从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 / Rewri

我必须将我的域从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
 http://example.com/folder/page.php

 becomes

 Location => https://example.com/folder/page.php
很好

https://example.com/folder/page.php

becomes

https://www.example.com/folder/page.php
很好

https://example.com/folder/page.php

becomes

https://www.example.com/folder/page.php
但是:

http://www.example.com/folder/page.php

becomes

Location => 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。

您可以使用以下规则

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ https://www.%1%{RERUEST_URI} [NE,L,R=301]

测试前请清除浏览器缓存。

我在这里找到了一个解决方案:

@w3dk的第二个答案是有效的

RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
您的站点需要通过www和非www over SSL进行访问,才能将.htaccess重定向到触发器


使用letsencrypt,拥有这两个证书没有问题。

感谢您的帮助。这是一个500服务器错误,感谢您修复此错误OK,您修复了500服务器错误,但现在变成@Labu77。请清除浏览器缓存并确保没有任何其他重定向规则。我检查了很多次,但每个页面都重定向到起始页。我检查它,所以我没有缓存errors@labu77您在/文件夹中是否有其他.htaccess?我的答案与您提供的答案之间没有差异。你确定我的代码失败了吗?是的,我检查了两次,现在又检查了一次。你的代码重定向到起始页。谢谢,真的很兴奋。