Cosa devo fare per convertire il mio MultiSite da HTTP a HTTPS?


8

Mi è stato assegnato il compito di convertire in HTTPS circa 100 siti nella mia istanza multisito.

Posso facilmente scrivere uno script per colpire il DB e modificare i valori siteurle homein HTTPS, quale inturn dovrebbe costringere il sito ad accodare script e future immagini incorporate in HTTPS giusto?

Bene, dovrò anche esaminare tutti i post_content per eventuali collegamenti interni, nonché le immagini che utilizzano HTTP e convertirle in HTTPS.

Probabilmente potrei montare qualcosa insieme per farlo, ma mi chiedo cos'altro devo cambiare. GUID giusto? Se avessi usato i comandi $ wpdb avrei bisogno di ricerializzare il DB in seguito?

Avrei dovuto chiedere prima, c'è un plugin affidabile che si occuperà di questo per me? Cos'altro devo sapere su questo processo?

Note - Abbiamo già tutte le certificazioni SSL, quindi è qualcosa di cui non devo preoccuparmi. - Il server esegue Linux (Redhat) e Apache - Il multisito utilizza sottodirectory - Non so molto altro, il server è fuori dalla mia giurisdizione


Il tuo multisito utilizza sottodirectory o sottodomini? Quale web server (Apache, nginx, ecc.) Stai usando? Ciò influirà sul tipo di certificato SSL che stai acquistando.
Pat J,

Grazie Pat, ho modificato la mia domanda con le informazioni che hai chiesto.
rugbert,

Fai attenzione con la ricerca e la sostituzione automatiche: se hai dati serializzati nel database, li interromperai cambiando httpin httpsse non cambi anche la lunghezza della stringa!
Steven,

Ciao @ rugbert, sei riuscito a risolvere questa domanda? Sto solo verificando se la mia risposta è stata utile alla tua domanda.
Ethan Jinks O'Sullivan,

Risposte:


1

È possibile eseguire uno script per AGGIORNARE tutti gli URL e le guide su https, se si desidera una configurazione pulita.

Ma considera anche alternative come:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>

In wp-config.php per il backend:

define('FORCE_SSL_ADMIN', true);

In wp-config.php per il frontend (o esegui uno script db UPDATE):

define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');

Quindi potresti semplicemente eseguire uno script per AGGIORNARE tutto l'URL del contenuto di wp_posts.


0

Questo processo comporta effettivamente l'acquisto di un certificato di sicurezza e l'applicazione al tuo server per i tuoi siti Web. Ciò a sua volta costringerà tutti coloro che visitano a una connessione sicura tramite il certificato presentato dal server. Questi certificati sono chiamati certificati SSL: http://www.DigiCert.com/SSL-Certificates


Grazie John, ho dimenticato di dire che abbiamo tutti i certificati SSL.
rugbert,

Ok in quel caso sono stati applicati i certificati e tutti i tuoi siti sono stati inseriti correttamente nei file DNS? Devo chiedere ospitate in loco o con una terza parte? Che sistema operativo è l'ambiente server?
John Lucey,

Stiamo utilizzando una terza parte per ospitare. Non ho troppe informazioni o accesso al server, ma è un server Linux redhat che esegue apache. Sono più preoccupato di ciò che devo fare al DB
rugbert,

1
Non credo che debba essere fatto nulla al database. SSL è lato server non DB. Il mio consiglio sarebbe di assicurarsi che i Certs siano stati applicati al server e di verificare usando https nell'URL per testare la validità. Se viene visualizzato il sito, dovresti riuscire a digitare il vecchio URL senza https e ti porterà automaticamente in https. È passato un po 'di tempo da quando ho distribuito un certificato così tristemente che non posso aiutarti attraverso questi passaggi, ma i tuoi ingegneri dovrebbero essere in grado di gestirlo per te e il file di reindirizzamento DNS sul server per correggere il lato del server URL.
John Lucey,

0

Un modo possibile per eseguire questa modifica dei dati è utilizzare WP-CLI sul terminale.

Prima di tutto, dovresti assicurarti di avere un backup e una solida strategia di ripristino nel caso qualcosa vada storto. È inoltre necessario testare questa procedura su un sistema locale o di prova con una copia del database live.

I passaggi di base sono, per scorrere su ciascun sito della rete e sostituire gli URL di ciascun sito utilizzando il search-replacecomando WP-CLI .

Ecco una bash one-liner:

for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done

Esaminiamo che:

for SITE in $(wp site list --field=url);

Quello avvia un ciclo per ogni riga dell'output del comando all'interno $()e scrive ogni riga nella variabile $SITE.

$(wp site list --field=url)

Questo è il site listcomando WP-CLI che ti fornisce un elenco di tutti gli URL dei siti nella tua rete. Esegui solo questo comando, probabilmente vedrai qualcosa del tipo:

http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...

Adesso

...); do

inizierà solo la parte del loop interno.

Il comando ciclo interno fa tutta la magia (l'ho diviso in due righe usando \per leggibilità):

wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose

Raccontiamo WP-CLI per la ricerca per $SITE(ad esempio https://your-site.tld/) e sostituirlo con una versione leggermente modificata: ${SITE/http:/https:}. Questa è una stringa bash che sostituisce l'operazione che sostituisce http:con https:. (Quindi risolvendo le variabili, il comando sarebbe simile wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replaceha molte opzioni possibili che sono descritte nella documentazione . Nell'esempio ho usato questi:

--dry-run --precise --network --verbose

--dry-rune --verbosesono chiaramente utili per testare il comando.

--network applica l'operazione di ricerca e sostituzione anche ai tab di rete.

--precisedice a WP-CLI di usare PHP anziché SQL per cercare e sostituire i valori. Ciò garantisce che i valori serializzati non vengano danneggiati.

Alla fine il ciclo si chiude con

; done

Consentitemi di enfatizzarlo di nuovo: verificatelo profondamente prima di iniziare a utilizzarlo in produzione. Dovresti capire come funziona e cosa fa WP-CLI. Ho usato WP-CLI prima di eseguire tali ricerche e sostituire operazioni per migrare siti multipli verso altri nomi di dominio, ma non per passare da httpa https.

Potrebbero esserci alcuni casi limite: WP-CLI legge ancora wp-config.phpe prova a trovare una «rete» corrispondente nel database usando le costanti in wp-config.php. Se stai manipolando un sito (il database) ma non l'altro (le costanti in wp-config.php) potresti avere dei problemi. Ma per il vostro caso, penso che non sarà un problema come WP si basa in genere su DOMAIN_CURRENT_SITEe PATH_CURRENT_SITEed essi non cambierà comunque. Ma ancora una volta, prova questo approfonditamente.

Con un po 'più di magia bash, puoi anche dividere questo loop in blocchi di 5 o 10 siti e attraversarlo passo dopo passo.



Fai la domanda nella direzione sbagliata. Quello corretto sarebbe: perché si dovrebbe usare questo plugin? Quali sono i vantaggi rispetto all'approccio CLI descritto?
David,

0

Per garantire che tutti i tuoi siti Web utilizzino HTTPS nel tuo post_content, puoi eseguire una delle due opzioni:

1. Backend: esegue una query SQL

Per assicurarsi che tutti i collegamenti HTTP siano impostati come HTTPS, utilizzare la seguente query SQL:

UPDATE wp_options SET option_value = replace(option_value, 'OLD_URL', 'NEW_URL') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'OLD_URL','NEW_URL');
UPDATE wp_posts SET post_content = replace(post_content, 'OLD_URL', 'NEW_URL');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'OLD_URL','NEW_URL');
  • OLD_URLsarà sostituito con http://example.com(non HTTP)
  • NEW_URLsarà sostituito con https://example.com(HTTPS)

Questo coprirà il siteurl, homee tutti i tuoi contenuti sul tuo sito Web al nuovo HTTPS.

2. Frontend: usa il plug-in Cerca e sostituisci

Un approccio più intuitivo consiste nell'utilizzare il plug-in Cerca e sostituisci per sostituire facilmente tutte le tabelle che contengono il tuo vecchio HTTP e modificarle in un HTTPS. Il processo è facile da usare e puoi visualizzare in anteprima quali tabelle e righe saranno interessate prima di applicare tali modifiche.

Preavviso

Prima di applicare qualsiasi modifica, penso che sia ovvio fare sempre un backup del database nel caso qualcosa vada storto.


0

HTTP è un protocollo predefinito, utilizzato dalla maggior parte dei siti Web per gestire le informazioni sul Web. Il tuo sito Web è in esecuzione su HTTPS senza alcun messaggio di errore, significa che il tuo certificato è stato installato correttamente. È necessario migrare l'intero sito Web da HTTP a HTTPS.

Scopri come spostare HTTP in HTTPS per WordPress

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.