2013-10-03 20 views
12
katalog

Mój Wordpress jest w www.example.com/blogHTTPS Siła Przekierowanie nie działa na Wordpress

Niedawno zmieniłem całą witrynę, aby wymusić HTTPS. Więc mój plik .htaccess w/blog/wygląda następująco:

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

ja również zmienić adres URL witryny w ustawieniach Wordpress być HTTPS.

Działa to doskonale na stronie głównej, ale na dowolnych stronach postów końcowy użytkownik może zmienić niezabezpieczony HTTP, zmieniając adres URL i naciskając klawisz enter. Na przykład można wpisać bezpośrednio: http://www.example.com/blog/post-1/ i zostanie załadowany jako HTTP.

Co jest nie tak z moim plikiem .htaccess? Gdzie jest luźny koniec?

Odpowiedz

30

Zmień kolejność reguł. Najpierw przekieruj do https, a następnie pozwól, aby WP przejął wszystkie Twoje żądania.

<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

Dziękuję bardzo! To wystarczyło –

+1

Myślałem, że na pewno był błąd składni w moim '.htaccess' ale na pewno to było przepisywanie WordPress nadchodzi pierwszy. Dzięki za to! – cfx

+1

Działa również doskonale dla mnie, dzięki za to. – ColinMcDermott

0

Można także dodać te dwie linie do wp-config.php

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

Więc można łatwo warunki dla środowiska dev http i https dla żyć tak:

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']); 
}