我的网站不会从HTTP重定向到HTTPS

时间:2019-05-20 作者:Kamran Asgari

我在我的网站上激活了SSL证书。我确实更改了设置:

setting > general 
和编辑wp-config.php 强制HTTPS:

define( \'FORCE_SSL_ADMIN\', true );
问题是,重定向不起作用,站点的HTTP和HTTPS两个版本都可以访问。

我检查了我的.htaccess 文件似乎一切都是正确的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} on [OR]
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule .* - [E=WPR_SSL:-https]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule .* - [E=WPR_ENC:_gzip]
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP:Cookie} !(wordpress_logged_in_.+|wp-postpass_|wptouch_switch_toggle|comment_author_|comment_author_email_) [NC]
RewriteCond %{REQUEST_URI} !^(/(.+/)?feed/?|/(?:.+/)?embed/|/checkout/(.*)|/cart/|/my-account/(.*)|/wc-api/v(.*)|/(index\\.php/)?wp\\-json(/.*|$))$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^(facebookexternalhit).* [NC]
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}.html%{ENV:WPR_ENC}" -f
RewriteRule .* "/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}.html%{ENV:WPR_ENC}" [L]
</IfModule>

UPDATE

我有WP-ROCKET 插件,我认为这是问题的主要根源,因为每当我清除缓存并从HTTP地址刷新站点时,它都会正确地重定向,但只重定向一次

2 个回复
最合适的回答,由SO网友:Kamran Asgari 整理而成

将此简单规则添加到.htaccess文件您可以覆盖与插件的任何可能冲突并重定向问题

不要忘记将这些行添加到.htaccess

RewriteCond %{HTTP:CF-Visitor} \'"scheme":"http"\'
RewriteRule ^(.*)$ https://www.example.com/$1 [L]

SO网友:Nicolai Grossherr

当https处于活动状态时,您的重写条件(代码中的第4行到第6行)将适用,因此您正在从https重定向到https。因此,您应该更改条件以检查,如果https未激活,那么!on!^443$!https. 此外,我不确定规则RewriteRule .* - [E=WPR_SSL:-https], 可能是WP Rocket特定的、超出范围的内容,这就是为什么我建议可能将其替换为RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301].

总之,我要说的是,将您的.htaccess 使用:

RewriteCond %{HTTPS} off
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

相关推荐

我的WordPress站点上有“https://”,但当我转到仪表板并单击访问站点时,它会删除“https://”

我们有一个内部网站,只有在您有office 365员工登录时才可访问。它托管在bluehost上,我们已经激活了它的https功能。我们的网站运行在WordPress multisite上,并通过https访问进行保护。现在,当我转到任何站点的仪表板时,它上面的访问站点链接会将我重定向到一个没有“https://”的页面。当我创建一个新页面或帖子时,可以点击的永久链接也没有“http://”或只有“http”,上面没有“s”。我还使用Redirection plugin 没有https://到https: