it-swarm.com.de

Ausführungsreihenfolge verschiedener htaccess-Weiterleitungen

Es scheint, dass ich, egal was ich suche, nicht verstehen kann, warum ich dieses Problem immer wieder bekomme, und aus irgendeinem Grund kann ich keine gute Erklärung dafür finden, wie es funktioniert. Es tut mir auch leid, wenn diese Quest schon einmal gestellt wurde, aber ich habe 2 Tage lang nach einer Antwort gesucht und kann die Antwort einfach nicht finden. (Wahrscheinlich die falschen Suchbegriffe)

ABER.

Ich habe derzeit ein Problem mit meinen Weiterleitungen, die die Funktionen Redirect und RewriteRule verwenden.

Der Kontext ist wie folgt.

Das Unternehmen, für das ich arbeite, hat kürzlich seine Website von Server und Design migriert und aktualisiert. Dies bedeutet natürlich, dass es Seiten gibt, die nicht mehr verfügbar sind, oder URLs, die umgeleitet werden müssen.

Das Problem trat zum ersten Mal auf, als ich durch alle Weiterleitungen ging und bemerkte, dass einige Weiterleitungen nicht zu der Seite gingen, die sie sollten.

Unten ist ein Teil der .htaccess -Datei, die mir die Probleme aufzeigt. Die Zeilen sind in der gleichen Reihenfolge wie in meinem .htaccess.

<IfModule mod_rewrite.c>
RewriteEngine On

Redirect 301 /nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad [https domainname]/nieuws
Redirect 301 /nieuws/145/Artikel-Telegraaf-Vertraging [https domainname]/nieuws
Redirect 301 /nieuws/145/Artikel-Telegraaf:-Vertraging.html [https domainname]/nieuws
Redirect 301 /nieuws/108/Wie-gaat-nu-via-(reis)verzekeraars-werken-`Reisagenten-kunnen-klanten-ook-verwijzen` [https domainname]/blog/euclaim-gaat-nu-via-reis-verzekeraars-werken
Redirect 301 /nieuws/136/Technisch-mankement-geen-overmacht.html [https domainname]/blog/technisch-mankement-geen-overmacht

RewriteRule ^nieuws/([1-9]|[1-9][0-9]|[1-9][0-9][0-9]||[1-9][0-9][0-9][0-9])/.*$ /nieuws [R=301,NC,L]

Das Problem ist, wenn ich zu /nieuws/136/Technisch-mankement-geen-overmacht.html gehe, werde ich zu /nieuws umgeleitet.

Das Problem

Nun ist das Problem nicht, dass ich nicht weiß, welcher Teil des htaccess dies verursacht, sondern mehr, warum und wie ich das lösen kann.

Das RewriteRule nimmt die URL auf und leitet sie zu /nieuws weiter, und es spielt keine Rolle, wo ich sie platziere, da es sie immer wieder aufnimmt. Ich habe versucht, das RewriteRule oben, unten, direkt hinter die Weiterleitungen zu setzen, wie in meinem Beispiel, aber nichts scheint zu verhindern, dass das RewriteRule die höchste Priorität hat.

Ist das normal oder mache ich hier etwas falsch?

Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen.

5
Controvi

Redirect gehört zu mod_alias, während RewriteRule eine mod_rewrite-Direktive ist. Zwei verschiedene Module. Verschiedene Module werden während der Anforderung unabhängig und zu verschiedenen Zeiten ausgeführt.

Sofern Sie keinen angepassten Apache-Server haben, führt mod_rewrite immer vor mod_alias aus, trotz der offensichtlichen Reihenfolge der Anweisungen in der Apache-Konfigurationsdatei (z. B. .htaccess).

Wenn Sie mod_rewrite zum Umleiten (und/oder URL-Umschreiben) verwenden, sollten Sie generell mod_rewrite für alle Ihre Umleitungen verwenden, um solche Konflikte zu vermeiden.

Beachten Sie, dass Sie vor dem Testen sicherstellen müssen, dass alle zwischengeschalteten Caches gelöscht wurden, da 301s vom Browser hart zwischengespeichert werden.


Redirect 301 /nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad [https domainname]/nieuws

Da Redirect beispielsweise Präfixabgleich ist, lautet die entsprechende RewriteRule -Anweisung:

RewriteRule ^nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad(.*) https://example.com/nieuws$1 [R=301,L]

Wenn dies jedoch eine exakte Übereinstimmung sein soll, gilt Folgendes:

RewriteRule ^nieuws/168/Luchtvaartmaatschappij-delft-onderspit-bij-Hoge-Raad$ https://example.com/nieuws [R=301,L]
6
MrWhite