Modul 3 · 3.2
www, Weiterleitung und gemischte Inhalte
Modul 3: Adresse, https und Benutzer · Lesezeit: 9 Minuten
Lernziel: Nach dieser Lektion können Sie eine Hauptadresse wählen, alle Varianten mit einer einzigen Weiterleitung dorthin schicken und gemischte Inhalte aufspüren und beheben.
Kernbegriffe: kanonische Adresse, 301 und 308, Weiterleitungskette, gemischte Inhalte (Mixed Content), Suchen und Ersetzen in der Datenbank, serialisierte Daten
Vier Adressen, eine Website
Ihre Website ist über vier Adressen erreichbar:
http://example.com
http://www.example.com
https://example.com
https://www.example.comFür einen Besucher spielt das keine Rolle, für Suchmaschinen sind es aber vier verschiedene Adressen mit demselben Inhalt. Auch Cookies (wie Ihr Login-Cookie) gelten pro Name: Wer sich auf www anmeldet, ist auf der Domain ohne www nicht angemeldet. Deshalb wählen Sie eine kanonische Adresse (die Hauptadresse) und leiten die anderen drei dorthin weiter.
Welche Sie wählen, ist Geschmackssache (Lektion 2.1). Wichtig ist, dass die Hauptadresse überall dieselbe ist: im DNS, im Zertifikat, unter Einstellungen > Allgemein (Lektion 3.1) und in den Weiterleitungen.
Weiterleiten mit einer 301, in einem Schritt
Eine Weiterleitung ist eine Antwort des Servers: "Diese Seite befindet sich woanders". Der Browser ruft dann automatisch die neue Adresse auf. Der Code gibt an, um welche Art von Weiterleitung es sich handelt:
| Code | Bedeutung | Verwendung |
|---|---|---|
| 301 | Dauerhaft verschoben | Die Standardwahl für http zu https und für www zur Domain ohne www (oder umgekehrt) |
| 308 | Dauerhaft, und die Methode (zum Beispiel ein Formularversand) bleibt gleich | Ist für diesen Zweck ebenfalls möglich; Browser und Suchmaschinen behandeln sie wie eine 301 |
| 302 oder 307 | Vorübergehend | Nur für etwas, das wirklich vorübergehend ist, etwa eine Wartungsseite |
Eine dauerhafte Weiterleitung teilt Suchmaschinen mit, dass die neue Adresse die richtige ist. Bei einer vorübergehenden merken sie sich weiterhin die alte Adresse.
Achten Sie auch auf die Kette. Angenommen, Ihre Hauptadresse ist https://example.com. Dann möchten Sie Folgendes:
http://www.example.com 301 https://example.com/
http://example.com 301 https://example.com/
https://www.example.com 301 https://example.com/
https://example.com 200Jede Variante landet in einem Schritt auf der Hauptadresse. Was häufig passiert:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Das funktioniert zwar, kostet aber einen zusätzlichen Schritt (zusätzliche Wartezeit, vor allem auf Mobilgeräten) und einen zusätzlichen TLS-Handshake. Schlimmer ist eine Schleife: Der Webserver leitet zu https weiter, WordPress leitet zurück zu http, weil die Adressen in den Einstellungen noch auf http stehen, und der Browser meldet "zu oft weitergeleitet". Dann arbeiten zwei Einstellungen gegeneinander. Sorgen Sie dafür, dass nur eine Stelle zu https weiterleitet (der Webserver oder das Panel) und dass die Adressen in WordPress bereits auf der Hauptadresse stehen.
WordPress leitet auch selbst weiter: Ruft jemand https://www.example.com/contact/ auf, während die Website-Adresse https://example.com ist, dann leitet WordPress zu https://example.com/contact/ weiter. Das funktioniert nur, wenn die Anfrage bei WordPress ankommt, also wenn der Webserver den Namen www ebenfalls zu dieser Website führt.
Gemischte Inhalte
Gemischte Inhalte (Mixed Content) liegen vor, wenn eine https-Seite Bestandteile über http:// lädt: ein Bild, ein Stylesheet, ein Skript, eine Schriftart oder ein eingebettetes Video. Der Browser hält das für unsicher, weil diese Bestandteile unterwegs verändert werden können.
- Skripte, Stylesheets und iframes über http werden von Browsern blockiert. Ihre Website sieht dann kaputt aus oder eine Funktion arbeitet nicht.
- Bilder, Audio und Video über http versuchen moderne Browser automatisch über https abzurufen; gelingt das nicht, werden sie blockiert. Das Schloss-Symbol kann dann eine Warnung anzeigen.
Woher sie stammen:
- Alte Links in Ihren Inhalten: Eine Website, die früher unter http lief, enthält in Tausenden von Beiträgen
<img src="http://example.com/wp-content/uploads/...">. WordPress speichert diese Links wörtlich in der Datenbank. - Theme- oder Plugin-Einstellungen mit einer vollständigen Adresse, zum Beispiel ein Logo oder Hintergrund mit
http://. - Externe Bestandteile einer anderen Website, die nur über http erreichbar sind. Diese müssen Sie ersetzen oder entfernen.
- Adressen unter Einstellungen > Allgemein, die noch auf http stehen (Lektion 3.1).
So finden Sie sie
Öffnen Sie die Seite, drücken Sie F12 und schauen Sie in den Tab Console (Konsole). Der Browser meldet jeden gemischten Inhalt mit der Adresse des Bestandteils. Oder suchen Sie im Quelltext der Seite (Strg+U) nach src="http:// und href="http://. Links zu anderen Websites im normalen Text (<a href="http://...">) erzeugen keine gemischten Inhalte; es geht um Dinge, die die Seite lädt.
Suchen und Ersetzen, aber richtig
Die Lösung für alte Links in Ihren Inhalten besteht darin, alle http://example.com in der Datenbank durch https://example.com zu ersetzen. Verlockend ist ein SQL-Befehl wie:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Tun Sie das nicht. Viele Einstellungen von Themes, Plugins und Widgets sind serialisiert gespeichert. Das sieht so aus:
s:27:"http://example.com/logo.png";Das s:27 bedeutet: Hier folgt ein Text mit 27 Zeichen. Nach einem einfachen Ersetzen ist der Text 28 Zeichen lang (es kam ein s hinzu), aber dort steht weiterhin 27. PHP kann den Wert dann nicht mehr lesen und die Einstellung geht stillschweigend verloren: ein leeres Menü, ein verschwundenes Logo, Widgets, die fehlen.
Verwenden Sie ein Werkzeug, das diese Längen anpasst, und erstellen Sie immer zuerst ein Backup (Lektion 8.1): Suchen und Ersetzen hat keinen Papierkorb.
- WP-CLI: erst schauen, dann handeln. Wechseln Sie im Terminal in das Verzeichnis Ihres WordPress und führen Sie zuerst den Probelauf aus (erste Zeile), erst danach den echten Durchlauf (zweite Zeile).
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guidMit --dry-run sehen Sie, wie viele Ersetzungen es pro Tabelle geben würde, ohne etwas zu ändern. --skip-columns=guid lässt die festen Kennungen der Beiträge (Spalte guid) unangetastet; WordPress empfiehlt, diese nie zu ändern. Ohne zusätzliche Option arbeitet WP-CLI nur mit den Tabellen von WordPress. Hat ein Plugin eigene Tabellen mit demselben Präfix, fügen Sie --all-tables-with-prefix hinzu. Verwenden Sie --all-tables nur, wenn Sie wissen, warum: Das betrifft jede Tabelle in der Datenbank, auch die einer anderen Website oder Anwendung.
- Ein Plugin zum Suchen und Ersetzen, das serialisierte Daten unterstützt (im Plugin-Verzeichnis von wordpress.org gibt es mehrere). Nutzen Sie auch dort zuerst den Testmodus und löschen Sie das Plugin danach wieder.
Ersetzen Sie nie etwas wie example.com ohne http:// oder https:// davor: Dann treffen Sie auch E-Mail-Adressen und andere Texte. Die komplette Vorgehensweise, auch für alle ohne Terminal, finden Sie im Wissensdatenbank-Artikel über Suchen und Ersetzen in der WordPress-Datenbank (siehe Weiterlesen).
In der Praxis: So sieht es in einem Panel aus
Als Beispiel verwenden wir DirectAdmin. Andere Panels haben einen vergleichbaren Schalter für "immer https".
- Aktivieren Sie in den Domain-Einstellungen SSL mit https-Weiterleitung erzwingen (Lektion 3.1).
- Legen Sie bei der Domain fest, ob www zur Domain ohne www führen soll oder umgekehrt (bei DirectAdmin in den Domain-Einstellungen; ansonsten mit einer Weiterleitung über Weiterleitungen oder
.htaccess). - Prüfen Sie die Kette mit der Aufgabe unten oder mit den Entwicklertools Ihres Browsers (Tab Netzwerk, Häkchen bei "Log beibehalten").
Zusammenfassung
- Wählen Sie eine kanonische Adresse und lassen Sie die anderen drei Varianten mit einer 301 (oder 308) dorthin führen, in einem Schritt.
- Lassen Sie nur eine Stelle zu https weiterleiten; sonst entsteht eine Schleife.
- Gemischte Inhalte liegen vor, wenn eine https-Seite Bestandteile über http lädt; die Browserkonsole zeigt, welche.
- Alte Links in der Datenbank ersetzen Sie mit
wp search-replaceoder einem Plugin, das serialisierte Daten versteht, nie mit einem einfachen SQL-REPLACE. - Immer zuerst ein Backup und zuerst ein Probelauf (
--dry-run); lassen Sie die Spalteguidin Ruhe und bleiben Sie bei den Tabellen von WordPress.
Quiz
Aufgabe
Aufgabe A3.2: Eine Hauptadresse und keine gemischten Inhalte. Geben Sie Ihre Domain ein. Das Programm öffnet die vier Varianten (http und https, mit und ohne www) und folgt den Weiterleitungen. Richtig ist: Alle vier landen auf derselben Adresse mit https, mit höchstens einer Weiterleitung pro Variante und nur mit dauerhaften Codes (301 oder 308). Danach liest das Programm das HTML der Startseite und sucht nach Skripten, Stylesheets, Bildern, iframes und Schriftarten, die über http:// geladen werden.
Weiterlesen
Diese Artikel beschreiben die Schritte in den Panels von WebOké; in anderen Panels funktioniert es ähnlich.
- DirectAdmin Anleitung 6.4: Besucher immer zu https weiterleiten
- DirectAdmin Anleitung 4.7: Weiterleitungen: eine Domain oder Seite weiterleiten
- Suchen und Ersetzen in der WordPress-Datenbank
- Besucher zwingend auf HTTPS weiterleiten
- Kostenloser DNS-Kurs 3.4: www, Weiterleitung und was DNS nicht kann
- Gemischte Inhalte (MDN, Englisch): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, Englisch): https://developer.wordpress.org/cli/commands/search-replace/
