HTTP 到 HTTPS 301 重定向代码不起作用,它说重定向太多

Posted

技术标签:

【中文标题】HTTP 到 HTTPS 301 重定向代码不起作用,它说重定向太多【英文标题】:HTTP to HTTPS 301 Redirection Code is Not Working, It says Too many redirects 【发布时间】:2017-07-20 19:54:24 【问题描述】:

我正在为我的一个网站使用 Bluehost。最近,最近,我将我的网站从 HTTP 移动到 HTTPS 。 之后,我使用了包括以下代码在内的不同代码来强制在我的网站上使用 HTTPS。

# SSL Rewrite
RewriteEngine On 
RewriteCond %SERVER_PORT 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

使用这篇文章后,当我在网上可用的 redirect-checker 上检查重定向时,我收到以下消息。

但它不起作用。重定向太多。请尽量减少你的 http://www.example.com 的重定向次数。您使用 19 个重定向。 理想情况下,您不应在重定向链中使用超过 3 个重定向。 超过三个重定向会在您的网站上产生不必要的负载 服务器并降低速度,最终导致糟糕的用户体验。

如果您想从浏览器访问我的网站,我会收到如下警告:

www.example.com 页面无法正常工作。 www.example.com 将您重定向 太多次了。

我认为某些重定向循环造成了这样的问题。

然而,

我的网站现在的状态:没有在 htaccess 上使用任何代码

    https//www.example.com 工作正常。返回 200 OK。 200 OK2

    https//example.com 现在是 301 重定向到 https//www.example.com(所以,我认为这也很好)

问题是:

    http//example.com 现在是 301 重定向到 http//www.example.com http//www. example.com 返回 200 OK。

为了解决问题 3,我在我的 htaccess 中包含以下代码

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

后来我发现:

http//example.com 现在是 301 重定向到 https//www.example.com

所以问题解决了:

http//example.com
https//example.com
https//www.example.com

现在我只需要一些代码来重定向 301:

http//www.example.com 到 https//www.example.com`

有人可以帮我吗?

如果我以有线方式解释我的问题,我很抱歉......:D。问题是我不是这方面的专家。希望大家能理解。

【问题讨论】:

【参考方案1】:

试试这个:

RewriteEngine On

# If not www
RewriteCond %HTTP_HOST !^www\. [NC]
# rewrite to https and www
RewriteRule ^ https://www.example.com%REQUEST_URI [R=301,L,NE]

# If not HTTPS
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteCond %HTTPS off
RewriteRule ^ https://www.example.com%REQUEST_URI [R=301,L,NE]

【讨论】:

非常感谢您的回复。但它没有用! > 首先它 301 从 http://www.example.com **TO** https://www.example.com 重定向。之后,它会一次又一次地重定向https://www.example.com **TO** https://www.example.com 大约20次。

以上是关于HTTP 到 HTTPS 301 重定向代码不起作用,它说重定向太多的主要内容,如果未能解决你的问题,请参考以下文章

从 http 到 https 的重定向不起作用

http跳转https和https跳转http的两种301重定向代码

如何使用 301 重定向而不是 302 将 HTTP 站点重定向到 HTTPS 站点

apache 2.4中的htaccess重定向301不起作用

使用 301 或 303 将 http 重定向到 https

最佳实践:301 将 HTTP 重定向到 HTTPS(标准域)