Fehlerbehebung

In cPanel eingerichtete Weiterleitung funktioniert nicht

Geprüft am 3 Min. Lesezeit Domains Weiterleitungen

cPanel speichert Weiterleitungen als Regeln in der .htaccess. Stehen sie hinter einem Block, der die Anfrage bereits verarbeitet, werden sie für manche Pfade möglicherweise nie erreicht. Prüfen Sie die erzeugte Datei, bevor Sie die Reihenfolge ändern.

Dass es Regeln von WordPress oder Joomla gibt, beweist noch keinen Konflikt. Testen Sie zuerst die URL mit curl -I, prüfen Sie den Code und den Header Location, kontrollieren Sie den Eintrag unter Current Redirects und öffnen Sie die .htaccess im richtigen DocumentRoot.

Wenn Antwort und Reihenfolge zeigen, dass ein Block der Anwendung die Anfrage verarbeitet, bevor sie die Weiterleitung erreicht, verschieben Sie nur die betroffene Regel vor diesen Block. Erstellen Sie eine Sicherungskopie und respektieren Sie die Blöcke, die von WordPress, LiteSpeed, Plugins und Sicherheitswerkzeugen verwaltet werden.

Eine Weiterleitung hinter dem WordPress-Block wird zum Beispiel für Pfade, die dieser Block an index.php übergibt, möglicherweise nicht ausgeführt:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

RewriteCond %{HTTP_HOST} ^antiguo\.ejemplo(?::[0-9]+)?$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?\s]*)
RewriteRule ^ https://nuevo.ejemplo/%1 [R=301,L,NE]

Wenn Sie dieses Abfangen bestätigt haben, setzen Sie die Weiterleitung außerhalb des verwalteten Blocks und vor ihn:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^antiguo\.ejemplo(?::[0-9]+)?$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?\s]*)
RewriteRule ^ https://nuevo.ejemplo/%1 [R=301,L,NE]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

RewriteEngine On muss in diesem Kontext vor den Regeln stehen, die es benötigen, aber nicht zwingend in der ersten Zeile der Datei. Um HTTPS zu erzwingen, verwenden Sie vorzugsweise cPanel > Domains > Force HTTPS Redirect, statt eine manuelle Weiterleitung anzulegen.

Die Domains im Beispiel sind Platzhalter: Ersetzen Sie Quelle und Ziel durch Ihre eigenen. Die Host-Bedingung beschränkt die Regel auf die alte Domain; der aus der ursprünglichen Anfrage übernommene Pfad behält seine kodierten Zeichen, und der Query-String bleibt erhalten. Fügen Sie NE nicht zu anderen Regeln hinzu, ohne zu prüfen, wie diese ihr Ziel zusammensetzen.

Testen Sie die Startseite, einen internen Pfad, einen Pfad mit Umlauten oder kodierten Zeichen und einen mit Parametern. Prüfen Sie auch, dass die neue Domain nicht in eine Schleife gerät. Bevor Sie die Änderung als dauerhafte 301 festlegen, können Sie in einem kontrollierten Test 302 verwenden; bestätigen Sie die Antwort danach, ohne sich auf eine vom Browser gespeicherte Weiterleitung zu verlassen. Liefert curl -I ein anderes Ergebnis als der Browser, vergleichen Sie mit einer GET-Anfrage: Nicht alle Anwendungen antworten auf HEAD gleich.

Das könnte Ihnen auch helfen

Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.