it-swarm.com.de

Die Redirect 301-Direktive für Apache hat keine Auswirkungen auf URLs mit Abfragezeichenfolge

Ich habe diesen alten Link http://www.example.com/?page_id=617/, den ich zur Homepage umleiten möchte. Ich habe versucht, diese Weiterleitung zu implementieren mit:

Redirect 301 /?page_id=617/ https://www.example.com/

Nach dem Anwenden dieser Änderung ist nichts passiert. Die alte URL leitet nicht weiter.

4
user6744479

Sie können die Abfragezeichenfolge nicht mit einem mod_alias Redirect abgleichen. Sie müssen stattdessen eine mod_rewrite RewriteRule -Direktive verwenden. Und mit der Servervariablen QUERY_STRING in einer Anweisung RewriteCond abgleichen.

Versuchen Sie stattdessen Folgendes oben in Ihrer .htaccess -Datei:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^page_id=617/$
RewriteRule ^$ https://www.example.com/? [R=302,L]

Beachten Sie, dass dies mit der genauen Abfragezeichenfolge ?page_id=617/ übereinstimmt. Ändern Sie das Muster in ^page_id=617, um eine Abfragezeichenfolge zu finden, die einfach beginnt?page_id=617.

Ändern Sie den 302 nur dann auf 301, wenn Sie sicher sind, dass er einwandfrei funktioniert. (Um zu vermeiden, dass fehlerhafte Weiterleitungen vom Browser zwischengespeichert werden.)

Der ? am Ende des RewriteRuleErsetzung ist erforderlich, um die Abfragezeichenfolge aus der Anforderung zu entfernen (andernfalls wird diese an die Ziel-URL weitergeleitet). In Apache 2.4+ können Sie stattdessen das Flag QSD verwenden.

4
MrWhite