我希望有人能帮上忙。
我的网站爬网显示我的主页上有一个重定向链。基本上,这表明我正在从:
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
)
我想这可能与这个问题有关,如果您有任何想法,我们将不胜感激。
最合适的回答,由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中。然而,请注意,如果不作进一步修改,此“通用”解决方案也将重定向子域。