【问题标题】:301 redirect http to https with www301 使用 www 将 http 重定向到 https
【发布时间】:2017-06-17 21:47:46
【问题描述】:

我必须将我的域从 http 重定向到 https。在我的 htaccess 中我已经有了。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

这个 sn-p 将所有不带“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。

【问题讨论】:

    标签: .htaccess redirect https http-status-code-301


    【解决方案1】:

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

    https://webmasters.stackexchange.com/questions/84757/htaccess-redirect-non-www-to-www-with-ssl-https

    @w3dk 的第二个答案有效。

    RewriteEngine On
    RewriteCond %{SERVER_PORT} !=443 [OR]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
    

    您的网站需要 www 和非 www 都可以通过 SSL 访问,以触发 .htaccess 重定向。

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

    【讨论】:

    • 我的回答和你提供的回答没有区别。你确定我的代码失败了吗?
    • 是的,我检查了两次,现在又检查了一次。您的代码重定向到起始页。谢谢。
    • 它真的是有线的。
    【解决方案2】:

    您可以使用以下规则

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

    在测试之前清除浏览器缓存。

    【讨论】:

    • 感谢您的帮助。这会导致 500 服务器错误,感谢您修复此问题
    • 好的,你修复了 ths 500 服务器错误,但现在 example.com/folder/page.php 变为 example.com
    • @Labu77 请清除您的浏览器缓存并确保您没有任何其他重定向规则。
    • 我检查了很多次,但是每个页面都重定向到起始页。我用webconfs.com/http-header-check.php检查它,所以我没有缓存错误
    • @labu77 你在 /folder 中有另一个 .htaccess 吗?
    猜你喜欢
    • 2018-10-19
    • 2019-08-12
    • 2019-02-04
    • 2015-02-16
    • 2017-05-03
    • 2016-03-27
    • 2016-01-20
    • 2017-11-24
    • 2017-03-24
    相关资源
    最近更新 更多