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和https跳转http的两种301重定向代码
如何使用 301 重定向而不是 302 将 HTTP 站点重定向到 HTTPS 站点
apache 2.4中的htaccess重定向301不起作用