301 Umleiten von URLs auf der Grundlage von GET-Variablen .htaccess
Habe ich ein paar unordentlich alten URLs wie...
http://www.example.com/bunch.of/unneeded/crap?opendocument&part=1
http://www.example.com/bunch.of/unneeded/crap?opendocument&Teil=2
...dass ich will, die Umleitung auf die neue, saubere form...
http://www.example.com/page.php/welcome
http://www.example.com/page.php/prices
Ich verstehe, dass ich die Umleitung einer Seite auf eine andere mit einem einfachen redirect, d.h.
Redirect 301 /Bündel.der/ungenutzte/Mist http://www.example.com/page.php
Aber der Quell-Seite nicht ändern, nur es GET vars. Ich kann nicht herausfinden, wie die Umleitung auf den Wert der GET-Variablen. Kann jemand helfen pls!!? Ich bin ziemlich geschickt mit dem alten regexes so kann ich ein pop-bei Verwendung von mod-rewrite, wenn ich muss, aber ich bin mir nicht klar über die syntax für das umschreiben GET vars und ich würde es vorziehen, zu vermeiden, die die Leistung beeinträchtigt, und verwenden Sie den Reiniger Redirect-Direktive. Gibt es eine Möglichkeit? und wenn nicht kann jeder Anhaltspunkt für mich, um die richtige mod-rewrite-syntax pls?
Cheers,
Roger.
/bunch.of/unneeded/crap?opendocument&part=1
zu /page.php/welcome
- und nicht Umgekehrt?InformationsquelleAutor user84643 | 2009-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Parameter in die URL-query kann ein beliebiger Reihenfolge, müssen Sie eine entweder eine
RewriteCond
- Direktive für jeden parameter zu prüfen oder zu für jeden möglich permutiation.Hier ist ein Beispiel mit einem
RewriteCond
Richtlinie für jeden parameter:Aber wie Sie sehen können, dies kann ein Durcheinander.
Also ein besserer Ansatz ist die Verwendung einer
RewriteMap
. Das einfachste wäre eine nur-text-Datei mit Schlüssel und Wert Paare:Definieren Sie Ihre Karte, schreiben Sie die folgende Anweisung in der server-oder Virtual-host-Konfiguration (diese Richtlinie ist nicht erlaubt, in per-directory-Kontext):
Dann würden Sie brauchen nur eine Regel:
Das ist nicht einmal alles, was ich Ihnen sagen könnte. Sie können auch ein PHP-Skript, um dieses problem zu lösen. Und die id könnte auch besser sein, da PHP ist eine mächtigere Sprache als mod_rewrite. Aber Sie haben gefragt, für eine mod_rewrite Lösung.
InformationsquelleAutor Gumbo
@Jack Ross
? wird verhindert, dass die url, die der Benutzer gesendet wird, die aus mit dem gleichen query-string, wie der origin-Seite.
InformationsquelleAutor bradym
In der Zusammenfassung, die Sie nutzen könnten
RedirectMatch
mit einem regex zu entsprechen, wird die vollständige URL, einschließlich query-string. Lassen, wird Sie neu anordnen Teile der URL, aber wenn Sie haben, um Konvertierungen wie "opendocument&part=1" zu "begrüßen" (wo die neue URL ist völlig anders als das original), müssen Sie möglicherweise eineRewriteMap
- oder vielleicht besser, senden Sie einfach alle URLs inpage.php
und parse den query-string in PHP.BEARBEITEN: Wenn es nur ein paar URLs, die Sie umleiten möchten, könnten Sie wahrscheinlich schreiben Sie sich einzelne Regeln wie
Redirect
funktioniert nur mit URL-Pfaden und nicht mit der URL-Abfrage.InformationsquelleAutor David Z