Was muss ich tun, um meine MultiSite von HTTP nach HTTPS zu konvertieren?


8

Ich wurde beauftragt, ungefähr 100 Sites in meiner Multisite-Instanz in HTTPS zu konvertieren.

Ich kann leicht ein Skript schreiben , um die Datenbank zu erreichen siteurlund die homeWerte und in HTTPS zu ändern. Welcher Inturn sollte die Site dazu zwingen, Skripte und zukünftige eingebettete Bilder in HTTPS einzufügen, oder?

Nun, ich muss auch alle post_content für interne Links sowie Bilder mit HTTP durchgehen und diese in HTTPS konvertieren.

Ich könnte wahrscheinlich etwas zusammenpeitschen, um das zu tun, aber ich frage mich, was ich sonst noch ändern muss. GUIDs richtig? Wenn ich die Befehle $ wpdb verwenden würde, müsste ich die Datenbank anschließend neu initialisieren?

Ich hätte zuerst fragen sollen, gibt es ein zuverlässiges Plugin, das das für mich erledigt? Was muss ich noch über diesen Prozess wissen?

Hinweise - Wir haben bereits alle SSL-Zertifikate, sodass ich mir darüber keine Sorgen machen muss. - Auf dem Server wird Linux (Redhat) und Apache ausgeführt. - Auf der Multisite werden Unterverzeichnisse verwendet. - Ich weiß nicht viel anderes, aber der Server befindet sich außerhalb meiner Zuständigkeit


Verwendet Ihre Multisite Unterverzeichnisse oder Unterdomänen? Welchen Webserver (Apache, Nginx usw.) verwenden Sie? Das hat einen gewissen Einfluss auf die Art des SSL-Zertifikats, das Sie kaufen.
Pat J

Danke Pat, ich habe meine Frage mit den Informationen bearbeitet, nach denen Sie gefragt haben.
Rugbert

Seien Sie vorsichtig beim automatischen Suchen und Ersetzen. Wenn Sie Daten in der Datenbank serialisiert haben, können Sie diese durch Ändern httpauf ändern , httpswenn Sie die Zeichenfolgenlänge nicht ändern.
Steven

Hallo @ rugbert, konnten Sie diese Frage lösen? Ich überprüfe nur, ob meine Antwort auf Ihre Frage hilfreich war.
Ethan Jinks O'Sullivan

Antworten:


1

Sie können ein Skript ausführen, um alle URLs und Anleitungen auf https zu aktualisieren, wenn Sie ein sauberes Setup wünschen.

Berücksichtigen Sie aber auch Alternativen wie:

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

In wp-config.php für das Backend:

define('FORCE_SSL_ADMIN', true);

In wp-config.php für das Frontend (oder führen Sie ein Datenbank-UPDATE-Skript aus):

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

Dann können Sie einfach ein Skript ausführen, um alle Inhalts-URLs von wp_posts zu aktualisieren.


0

Bei diesem Vorgang wird tatsächlich ein Sicherheitszertifikat gekauft und auf Ihren Server für Ihre Websites angewendet. Dies wiederum zwingt jeden Besucher über das von Ihrem Server vorgelegte Zertifikat zu einer sicheren Verbindung. Diese Zertifikate werden als SSL-Zertifikate bezeichnet: http://www.DigiCert.com/SSL-Certificates


Danke John, ich habe vergessen zu erwähnen, dass wir alle SSL-Zertifikate haben.
Rugbert

Ok, in diesem Fall wurden die Zertifikate angewendet und alle Ihre Websites wurden korrekt in DNS-Dateien aufgelistet? Ich muss fragen, ob Sie vor Ort oder mit einem Dritten hosten. Welches Betriebssystem ist die Serverumgebung?
John Lucey

Wir verwenden einen Dritten als Host. Ich habe nicht zu viele Informationen oder Zugriff auf den Server, aber es ist ein Redhat Linux Server, auf dem Apache ausgeführt wird. Ich bin mehr besorgt darüber, was ich für die DB
brauche

1
Ich glaube nicht, dass etwas an der Datenbank getan werden muss. SSL ist serverseitig, nicht DB. Mein Rat wäre, sicherzustellen, dass die Zertifikate auf den Server angewendet wurden, und dies zu überprüfen, indem Sie https in Ihrer URL verwenden, um die Gültigkeit zu testen. Wenn die Site angezeigt wird, sollten Sie in der Lage sein, einfach die alte URL ohne https einzugeben, und Sie werden automatisch zu https weitergeleitet. Es ist schon eine Weile her, dass ich ein Zertifikat so traurig bereitgestellt habe, dass ich Ihnen bei diesen Schritten nicht helfen kann, aber Ihre Ingenieure sollten in der Lage sein, dies für Sie sowie die DNS-Umleitungsdatei auf dem Server zur Korrektur der URL-Serverseite zu handhaben.
John Lucey

0

Eine Möglichkeit, diese Datenänderung durchzuführen, ist die Verwendung von WP-CLI auf dem Terminal.

Zunächst sollten Sie sicherstellen, dass Sie über eine Sicherungs- und eine solide Wiederherstellungsstrategie verfügen, falls etwas schief geht. Sie sollten dieses Verfahren auch auf einem lokalen oder Testsystem mit einer Kopie der Live-Datenbank testen.

Die grundlegenden Schritte bestehen darin, über jeden Standort Ihres Netzwerks zu iterieren und die URLs jedes Standorts mit dem search-replaceBefehl von WP-CLI zu ersetzen .

Hier ist ein Bash-Einzeiler:

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

Lassen Sie uns das untersuchen:

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

Dieser startet eine Schleife für jede Zeile der Ausgabe des Befehls $()und schreibt jede Zeile in die Variable $SITE.

$(wp site list --field=url)

Dies ist der WP-CLI- site listBefehl , mit dem Sie eine Liste aller Site-URLs in Ihrem Netzwerk erhalten. Führen Sie nur diesen Befehl aus. Sie werden wahrscheinlich Folgendes sehen:

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

Jetzt

...); do

startet nur den inneren Schleifenteil.

Der Befehl für die innere Schleife macht die ganze Magie (ich habe ihn zur \besseren Lesbarkeit in zwei Zeilen aufgeteilt ):

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

Wir sagen WP-CLI suchen für $SITE(zB https://your-site.tld/) und ersetzen es mit einer leicht modifizierten Version: ${SITE/http:/https:}. Dies ist eine Operation bash Zeichenfolge ersetzt , dass ersetzt http:mit https:. (Wenn Sie also die Variablen auflösen, sieht der Befehl so aus wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

search-replacehat viele mögliche Optionen, die in der Dokumentation beschrieben werden . Im Beispiel habe ich diese verwendet:

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

--dry-runund --verbosesind eindeutig hilfreich beim Testen des Befehls.

--network wendet den Such- und Ersetzungsvorgang auch auf die Netzwerktabellen an.

--preciseWeist WP-CLI an, PHP anstelle von SQL zum Suchen und Ersetzen der Werte zu verwenden. Dadurch wird sichergestellt, dass serialisierte Werte nicht beschädigt werden.

Schließlich wird die Schleife mit geschlossen

; done

Lassen Sie es mich noch einmal betonen: Testen Sie dies gründlich, bevor Sie es in der Produktion einsetzen. Sie sollten verstehen, wie es funktioniert und was WP-CLI tut. Ich habe zuvor WP-CLI verwendet, um solche Searach-Operationen durchzuführen und Operationen zu ersetzen, um Multisites auf andere Domain-Namen zu migrieren, aber nicht, um von httpzu zu wechseln https.

Es kann einige Randfälle geben: WP-CLI liest das weiterhin wp-config.phpund versucht, mithilfe der Konstanten in ein passendes «Netzwerk» in der Datenbank zu finden wp-config.php. Wenn Sie eine Site (die Datenbank) manipulieren, aber nicht die andere (die Konstanten in wp-config.php), können Probleme auftreten. Aber für Ihren Fall denke ich , dass das kein Problem sein wird , wie sie typischerweise WP verlässt sich auf DOMAIN_CURRENT_SITEund , PATH_CURRENT_SITEund sie werden sowieso nicht ändern. Aber noch einmal, testen Sie dies gründlich.

Mit etwas mehr Bash-Magie können Sie diese Schleife auch in Blöcke von 5 oder 10 Sites aufteilen und Schritt für Schritt durchlaufen.



Sie stellen die Frage in die falsche Richtung. Das Richtige wäre: Warum sollte man dieses Plugin verwenden? Was sind die Vorteile gegenüber dem beschriebenen CLI-Ansatz?
David

0

Um sicherzustellen, dass alle Ihre Websites HTTPS in Ihrer verwenden post_content, können Sie eine von zwei Optionen ausführen:

1. Backend: Führen Sie eine SQL-Abfrage aus

Verwenden Sie die folgende SQL-Abfrage, um sicherzustellen, dass alle Ihre HTTP-Links als HTTPS festgelegt sind:

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_URLwird ersetzt durch http://example.com(Nicht-HTTP)
  • NEW_URLwird ersetzt durch https://example.com(HTTPS)

Dies deckt den siteurl,, homeund alle Ihre Inhalte auf Ihrer Website für das neue HTTPS ab.

2. Frontend: Verwenden Sie das Plugin Suchen & Ersetzen

Ein benutzerfreundlicherer Ansatz besteht darin, das Search & Replace- Plugin zu verwenden, um alle Tabellen, die Ihr altes HTTP enthalten, einfach zu ersetzen und in ein HTTPS zu ändern. Der Prozess ist einfach zu verwenden und Sie können eine Vorschau der betroffenen Tabellen und Zeilen anzeigen, bevor Sie diese Änderungen anwenden.

Vorwarnung

Bevor Sie Änderungen vornehmen, ist es meines Erachtens selbstverständlich, immer eine Sicherungskopie Ihrer Datenbank zu erstellen, falls etwas schief geht.


0

HTTP ist ein Standardprotokoll, das von den meisten Websites verwendet wird, um die Informationen über das Web zu verarbeiten. Ihre Website wird unter HTTPS ohne Fehlermeldung ausgeführt. Dies bedeutet, dass Ihr Zertifikat korrekt installiert wurde. Sie sollten Ihre gesamte Website von HTTP auf HTTPS migrieren.

Erfahren Sie, wie Sie HTTP zu HTTPS für WordPress verschieben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.