HTTPS强制redirect不能在WordPress中工作

我的Wordpress目录位于www.example.com/blog

我最近改变了我的整个网站强制HTTPS。 所以我的.htaccess文件在/ blog /中看起来像这样:

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

我还将Wordpress设置中的网站url更改为HTTPS。

这在主页上完美地工作,但是在任何post页面中,最终用户能够通过改变URL并按下回车改变为不安全的HTTP。

例如,他们可以直接键入: http : //www.example.com/blog/post-1/ ,它将作为HTTP加载。

我的.htaccess文件有什么问题? 松散的目标在哪里?

更改规则的顺序。 首先重定向到https ,然后让WP接管您的所有请求。

 <Ifmodulee mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </Ifmodulee> 

您也可以将这两行添加到wp-config.php

 define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); 

所以你可以很容易地为http开发环境和https生活条件如下:

 if(strpos($_SERVER['HTTP_HOST'], 'livedomain.com') !== FALSE){ define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); } else { define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']); }