web-dev-qa-db-de.com

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

Ich wurde mit der Konvertierung von ca. 100 Sites in meiner Instanz mit mehreren Standorten in HTTPS beauftragt.

Ich kann ganz einfach ein Skript schreiben, um die Datenbank zu öffnen und die Werte für siteurl und home in HTTPS zu ändern. In welchem ​​Fall sollte die Site gezwungen sein, Skripts und zukünftige eingebettete Bilder in HTTPS einzureihen, oder?

Nun, ich muss auch alle post_content für alle internen Links sowie Bilder über 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 $ wpdb-Befehle verwenden würde, müsste ich die DB anschließend erneut serialisieren?

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

Hinweise - Wir haben bereits alle SSL-Zertifikate, sodass ich mir 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. Der Server befindet sich außerhalb meines Zuständigkeitsbereichs

8
rugbert

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

Erwägen 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 db 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 die Inhalts-URL von wp_posts zu AKTUALISIEREN.

1
The J

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

Zuallererst sollten Sie sicherstellen, dass Sie über ein Backup und eine solide Wiederherstellungsstrategie verfügen, falls etwas schief geht. Sie sollten dieses Verfahren auch auf einem lokalen System oder einem 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 Befehl search-replace 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

Untersuchen wir das:

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

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

$(wp site list --field=url)

Dies ist der WP-CLI-Befehl site list , mit dem Sie eine Liste aller Site-URLs in Ihrem Netzwerk erhalten. Führen Sie diesen Befehl nur 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 innere Schleifenbefehl macht die ganze Magie (ich habe ihn zur besseren Lesbarkeit mit \ in zwei Zeilen aufgeteilt):

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

Wir weisen WP-CLI an, Suche nach $SITE (z. B. https://your-site.tld/) und Ersetzen mit einer leicht geänderten Version zu suchen: ${SITE/http:/https:}. Dies ist eine Bash-Zeichenfolge, die die Operation ersetzt, bei der http: durch https: ersetzt wird. (Wenn Sie also die Variablen auflösen, sieht der Befehl wie folgt aus: wp search-replace "http://your-site.tdl/" "https://your-site.tld/").

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

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

--dry-run und --verbose sind eindeutig hilfreich, um den Befehl zu testen.

--network wendet die Such- und Ersetzungsoperation auch auf die Netzwerktabellen an.

--precise weist WP-CLI an, PHP anstelle von SQL zu verwenden, um die Werte zu suchen und zu ersetzen. Dadurch wird sichergestellt, dass serialisierte Werte nicht beschädigt werden.

Zum Schluss wird die Schleife mit geschlossen

; done

Lassen Sie es mich noch einmal betonen: Testen Sie dies gründlich, bevor Sie mit der Produktion beginnen. Sie sollten verstehen, wie es funktioniert und was WP-CLI tut. Ich habe zuvor WP-CLI verwendet, um solche Such- und Ersetzungsvorgänge auszuführen, um mehrere Standorte auf andere Domänennamen zu migrieren, aber nicht, um von http zu https zu wechseln.

Es kann einige Edge-Fälle geben: WP-CLI liest immer noch den wp-config.php und versucht, mithilfe der Konstanten in wp-config.php ein passendes "Netzwerk" in der Datenbank zu finden. Wenn Sie eine Site (die Datenbank) manipulieren, aber nicht die andere (die Konstanten in wp-config.php), geraten Sie möglicherweise in Schwierigkeiten. Aber in Ihrem Fall ist das meines Erachtens kein Problem, da WP normalerweise auf DOMAIN_CURRENT_SITE und PATH_CURRENT_SITE basiert und sich auch nicht ändert. Aber noch einmal, testen Sie dies gründlich.

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

0
David

Bei diesem Vorgang wird ein Sicherheitszertifikat gekauft und auf Ihren Server für Ihre Websites angewendet. Dies wiederum zwingt alle Besucher dazu, über das von Ihrem Server vorgelegte Zertifikat eine sichere Verbindung herzustellen. Diese Zertifikate werden als SSL-Zertifikate bezeichnet: http://www.DigiCert.com/SSL-Certificates

0
John Lucey

Um sicherzustellen, dass alle Ihre Websites HTTPS in Ihrem post_content verwenden, haben Sie zwei Möglichkeiten:

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_URL wird durch http://example.com ersetzt (nicht HTTP)
  • NEW_URL wird durch https://example.com (HTTPS) ersetzt

Dies deckt die siteurl, home und den gesamten Inhalt Ihrer Website für das neue HTTPS ab.

2. Frontend: Benutzen Sie das Search & Replace Plugin

Ein benutzerfreundlicherer Ansatz ist die Verwendung des Plugins Suchen & Ersetzen , um alle Tabellen, die Ihr altes HTTP enthalten, einfach zu ersetzen und in ein HTTPS zu ändern. Der Vorgang ist einfach zu handhaben 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.

HTTP ist ein Standardprotokoll, das von den meisten Websites verwendet wird, um die Informationen über das Web zu verarbeiten. Ihre Website wird mit 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 nach HTTPS für WordPress verschieben

0
Harshita