How To Fix A Redirect Chain

时间:2018-07-16 作者:user2868832

我希望有人能帮上忙。

我的网站爬网显示我的主页上有一个重定向链。基本上,这表明我正在从:

http: > https: > https://www.

我需要一切http://http://www 直接发送至https://www. 没有链条。

以下是.htaccess, 有人能看到是否有可能导致它的错误吗。

</IfModule>

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
此外,我看到他们有一个插件,名为

已安装SSL不安全内容修复程序。

它在其状态下显示:

Array (
[HTTPS] => on
[PHPHANDLER] => /usr/local/php70/bin/php
[HTTP_X_REAL_IP] => 109.158.20.158
[HTTP_X_FORWARDED_PROTO] => https
)
我想这可能与这个问题有关,如果您有任何想法,我们将不胜感激。

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

非www到www重定向肯定是由WordPress(稍后)处理的。中的现有重定向.htaccess 仅在同一主机上使用HTTP到HTTPS吗?如果您有任何实施计划,这实际上是首选(阅读:必要)方式HSTS 在不久的将来。因此,这不一定是一个“错误”。

但是,为了避免双重重定向,可以将非www到www重定向合并到现有的.htaccess 规则例如:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\\.example\\.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
如果您特别想要一个通用(任何域)解决方案,而不需要对域进行硬编码,那么您可以执行以下操作:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\\.
RewriteCond %{HTTP_HOST} ^(?:www\\.)?(.+)\\.?$ [NC]
RewriteRule .* https://www.%1%{REQUEST_URI} [R=301,L]
在哪里%1 是对主机名的反向引用(减去任何www. 前缀)在最后匹配的CondPattern中。然而,请注意,如果不作进一步修改,此“通用”解决方案也将重定向子域。

结束