it-swarm.com.de

Ein Zugriffsproblem mit Umleitungen, die einen Schrägstrich löschen

Ich versuche, mithilfe von http://olddomain.tld einzelne URLs auf https://newdomain.tld (nicht mehr verwendete WordPress Site) auf einzelne URLs auf .htaccess (neue WordPress Site) umzuleiten.

Das Umleiten der Startseite funktioniert einwandfrei mit Redirect 301 / https://newdomain.tld (daher habe ich nicht vergessen, die Rewrite-Engine oder ähnliches zu aktivieren).

Keine der anderen Weiterleitungen funktioniert jedoch ordnungsgemäß. Beispiel: Ich schreibe Redirect 301 /page/ https://newdomain.tld/page/in .htaccess und leite dann http://olddomain.tld/page/ zu https://newdomain.tldpage weiter. Das heißt, die Umleitung ist vorhanden, aber der abschließende Schrägstrich wird in jedem Fall entfernt.

Was könnte das verursachen?

Ich habe alle Arten von immer exotischeren Variationen des olddomain.tld.htaccess ausprobiert, bevor ich endlich auf die Idee kam, ob abschließende Schrägstriche durch newdomain.tlds .htaccess irgendwie fallen gelassen werden. Könnte etwas hier drinnen das tun?

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

ps. Es ist nicht dieses , dieses , dieses , dieses , dieses oder dies .

3
gesher

Wenn der abschließende Schrägstrich "fallengelassen" wird, befindet sich möglicherweise etwas in der WordPress -Konfiguration am Zielstandort, an dem dies ausgeführt wird. Überprüfen Sie den Netzwerk-/HTTP-Verkehr ... an welchem ​​Punkt sehen Sie die zweite Umleitung? Welcher HTTP-Status ist die zweite Weiterleitung?

Wenn Sie die neue URL direkt eingeben, wird der abschließende Schrägstrich trotzdem entfernt?

Jedoch...

Ich schreibe Redirect 301 /page/ https://newdomain.tld/page/ in .htaccess ...

Die Anweisung Redirect ist eine mod_alias-Anweisung. Dies hat nichts mit RewriteEngine zu tun, das Teil von mod_rewrite ist. Verschiedene Apache-Module arbeiten unabhängig voneinander und Sie sollten vermeiden, Weiterleitungen von beiden Modulen zu mischen - es kann zu unerwarteten Konflikten kommen (da mod_rewrite zuerst ausgeführt wird, unabhängig von der offensichtlichen Reihenfolge dieser Anweisungen in .htaccess).

Da WordPress bereits mod_rewrite verwendet, sollten Sie diese Weiterleitungen ändern, um stattdessen mod_rewrite zu verwenden, und diese sollten vor den vorhandenen WordPress Direktiven stehen. Also zum Beispiel:

# Home page (ie. "/")
RewriteRule ^$ https://newdomain.tld/ [R=301,L]

# Other page (ie. "/page/")
RewriteRule ^page/$ https://newdomain.tld/page/ [R=301,L]

Beachten Sie, dass das RewriteRuleMuster keinen Schrägstrich enthält (wie bei mod_alias Redirect).

Könnte etwas hier drinnen das tun?

Das ist einfach der WordPress Front-Controller - nein, der den abschließenden Schrägstrich nicht fallen lassen kann. Aber vermutlich gibt es eine URL-Kanonisierung in der WordPress-Konfiguration selbst?

1
MrWhite

Der WordPress bereitgestellte .htaccess Code enthält keine Fehler, da nur interne Änderungen vorgenommen werden. Nein externe Weiterleitung wird im newdomain.tld-Code von .htaccess ausgeführt, wie Sie angegeben haben:

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

Der abschließende Schrägstrich wird entweder von WordPress Core gelöscht, abhängig von den Umschreiberegeln, die Sie (oder Ihre Plugins) in WordPress festgelegt haben, oder von einer anderen Serverkonfiguration.

Um zu überprüfen, ob es sich um WordPress handelt, gehen Sie zu:

WordPress Admin Panel => Settings => Permalinks

und überprüfe den Permalink Settings. Überprüfen Sie dann in Common Settings das Ende der URL-Struktur. Höchstwahrscheinlich haben Sie dort nicht den abschließenden Schrägstrich (/).

Wenn Sie also Custom Structure wie folgt verwenden:

https://newdomain.tld/%postname%

Machen Sie es als:

https://newdomain.tld/%postname%/

Das sollte dein Problem beheben. Wenn dies nicht der Fall ist, bedeutet dies, dass der abschließende Schrägstrich von einer anderen Stelle stammt. Wenn Sie mehrere Plugins haben, deaktivieren Sie sie und aktivieren Sie sie nacheinander, um zu überprüfen, wer sie verursacht.

Hinweis: Stellen Sie beim Testen von URL-Weiterleitungen immer sicher, dass Sie den Browser-Cache leeren.

Wenn nichts davon funktioniert, liegt das Problem an einer anderen Serverkonfiguration.

1
Fayaz