2013-10-03 17 views
12
directory

mio Wordpress è a www.example.com/blogHTTPS Forza Redirect non funziona in Wordpress

Recentemente ho cambiato il mio intero sito per forzare HTTPS. Quindi il mio file .htaccess nella/blog/assomiglia a questo:

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

ho anche cambiato l'URL del sito nelle impostazioni di Wordpress per essere HTTPS.

Questo funziona perfettamente nella home page, ma in qualsiasi pagina di post, l'utente finale può passare a HTTP non sicuro, modificando l'URL e premendo Invio.

Ad esempio, è possibile digitare direttamente: http://www.example.com/blog/post-1/ e verrà caricato come HTTP.

Cosa c'è di sbagliato nel mio file .htaccess? Dov'è la fine libera?

risposta

30

Modificare l'ordine delle regole. Innanzitutto reindirizza a https e poi lascia che WP prenda in consegna tutte le tue richieste.

<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

Grazie mille! Questo ha fatto il trucco –

+1

Ho pensato che fosse sicuramente un errore di sintassi nel mio '.htaccess', ma sicuramente era la riscrittura di WordPress che veniva prima. Grazie per questo! – cfx

+1

Funziona perfettamente anche per me, grazie per questo. – ColinMcDermott

0

È possibile anche aggiungere queste due righe alla wp-config.php

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

Così si potrebbe facilmente rendere le condizioni per http per l'ambiente dev e HTTPS per vivere in questo modo:

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