2013-10-03 2 views
12
каталог

Мой Wordpress находится в www.example.com/blogHTTPS Force Перенаправление не работает в Wordpress

Недавно я изменил весь мой сайт, чтобы заставить HTTPS. Так что мой файл .htaccess в/блог/выглядит следующим образом:

<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} 

Я также изменил URL сайта в настройках Wordpress быть HTTPS.

Это прекрасно работает на домашней странице, но на любых страницах сообщений конечный пользователь может перейти на незащищенный HTTP, изменив URL-адрес и нажав enter.

Например, они могут вводить напрямую: http://www.example.com/blog/post-1/ и загружать его как HTTP.

Что не так с моим файлом .htaccess? Где свободный конец?

ответ

30

Измените порядок в правилах. Сначала переадресуйте на https, а затем пусть WP возьмет на себя все ваши запросы.

<IfModule 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] 
</IfModule> 
+2

Большое вам спасибо! Это сделало трюк –

+1

Я думал, что это была синтаксическая ошибка в моем .htaccess, но, конечно же, WordPress переписывался в первую очередь. Спасибо за это! – cfx

+1

Отлично работает для меня, спасибо за это. – ColinMcDermott

0

Вы также можете добавить эти две строки в 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']); 
} 
Смежные вопросы