Cambiare l'installazione MultiSite da HTTP a HTTPS
Ho installato MultiSite con l'URL impostato come http://example.com, ma ora voglio forzare tutte le richieste a passare su HTTPS, quindi sto cercando di cambiare l'URL in https://example.com. Ho esaminato il database e aggiornato tutti i valori siteurl
e home
con https, ma il sito continua a caricarsi su HTTP, invece di essere reindirizzato a HTTPS.
So che potrei configurare alcune regole htaccess, ma questo è soggetto a errori. Nelle installazioni regolari WordPress reindirizzerà automaticamente tutte le richieste agli URL canonici definiti nelle impostazioni siteurl
e home
, quindi presumo che MultiSite faccia lo stesso.

Ho riscontrato lo stesso problema: con WordPress multisite, non c'è alcuna opzione o impostazione che definisca se un dominio del sito è HTTP o HTTPS. Anche dopo aver sostituito tutte le occorrenze nel database, un visitatore del sito può ancora accedere e navigare nel sito in HTTP, senza essere reindirizzato a HTTPS.
La seguente soluzione semplice ha funzionato per me: ho aggiunto questa regola mod_rewrite
al mio file .htaccess, appena prima delle regole di riscrittura specifiche di WordPress.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Poiché questa regola non definisce un dominio specifico, è perfetta per le esigenze di WordPress multisite.
Ho trovato questa regola nel seguente thread: https://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite

Questo tipo di soluzione è eccellente per un multisite che ha un protocollo omogeneo. Quando si desidera avere un mix di siti con SSL e senza SSL in una rete multisite, le cose si complicano. Molto complicate.

Infatti, il mio contesto era una rete in cui ho convertito tutti i siti a SSL contemporaneamente.

Tutti i plugin che ho visto servono per impostare pagine specifiche da usare in HTTPS, non l'intero sito. Nelle installazioni regolari di WP, il metodo normale per far sì che tutto il sito usi HTTPS è impostare i valori siteurl
e home
. Anche se ce ne fossero alcuni disponibili, ci sono diverse ragioni per cui usare un plugin è una cattiva idea quando puoi semplicemente impostare un valore di configurazione (sicurezza, prestazioni, ecc.). Inoltre, sono abbastanza sicuro che non importa se il certificato SSL sia già attivo o meno. WordPress non lo verificherà quando determina qual è l'URL canonico.

Vero e vero, mi chiedevo solo se lo avessi già configurato o meno (molte persone non sanno che serve un certificato SSL se vuoi veramente usare SSL, da qui la domanda). Mi sono appena ricordato che un po' di tempo fa avevo un mio sito in SSL (non solo pagine specifiche, ma tutto il sito come vuoi tu). Cercherò il codice.

Mmm... non sono riuscito a trovare il codice che usai allora. Tuttavia, ho trovato questo: http://prosauce.org/blog/2010/08/enable-complete-support-for-ssl-on-wordpress/

Ho installato Better WP Security per un motivo diverso, ma si è scoperto che ha un'opzione per forzare tutte le richieste di pagina (frontend e backend) a passare tramite SSL.

La soluzione migliore sarebbe quella che non utilizza alcun plugin secondo me. In questo modo ogni richiesta non deve essere analizzata dal plugin.

Ho modificato le regole specifiche per un host. Ma ora reindirizza tutti gli altri blog a questo. Ho cambiato "%{HTTP_HOST}" con un dominio specifico e ho mantenuto la parte "%{REQUEST_URI}".
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://gezentiyiz.biz%{REQUEST_URI} [L,R=301]
IMHO aggiungere ulteriori righe RewriteRule per altri domini potrebbe risolvere il problema, ma mi chiedo se esista un modo più semplice per farlo. Perché ogni volta che viene creato un sito blog dobbiamo modificare il file .htaccess???
Modifica: Ho risolto il problema modificando la RewriteRule in questo modo:
RewriteRule http://gezentiyiz.biz%{REQUEST_URI} https://gezentiyiz.biz%{REQUEST_URI} [L,R=301]

"Ho cambiato %{HTTP_HOST}
con un dominio specifico" - Ma perché? Sembra più una domanda diversa che una "risposta"? Stai cercando di essere selettivo e reindirizzare solo alcuni siti a HTTPS?? "Ho risolto il problema modificando la RewriteRule così" - Ma questa regola non ha senso e non farebbe nulla!? Per rendere la regola dipendente dal nome host, devi verificare l'intestazione HTTP Host
richiesta (variabile del server Apache HTTP_HOST
) in una condizione separata (direttiva RewriteCond
).
