Nginx einfache Weiterleitung von Produkten von der alten zur neuen Kategorie


9

Ich leite Produkte von der alten in die neue Kategorie weiter.

Ich habe es geschafft, dass es mit der folgenden Regel funktioniert:

rewrite ^/old-category/(.*) /new-category/$1;

Aber ich möchte wissen, wann ich das "end line" -Zeichen $ verwenden soll und was der Unterschied dazu oder ohne es in meinem Fall ist. Zum Beispiel:

rewrite ^/old-category/(.*)$ /new-category/$1;

Außerdem möchte ich Benutzer umleiten, wenn sie einfach einen alten Kategorienamen (ohne Produkte) schreiben, sollte ich eine neue Regel nur für die Umleitung von Kategorien erstellen oder die aktuelle Regel oben bearbeiten, um in beiden Fällen zu funktionieren.

Vielen Dank für Ihre Antworten im Voraus.

Antworten:


9

Beantworten Sie Ihre Fragen in der richtigen Reihenfolge ...

Dies

rewrite ^/old-category/(.*) /new-category/$1;

und das

rewrite ^/old-category/(.*)$ /new-category/$1;

wie geschrieben sind gleichwertig. Die .*Regel stimmt mit 0 oder mehr von "alles" überein, daher $ist das redundant / wird nicht wirklich benötigt.

Der $Terminator ist nützlich, wenn Sie Zeichenfolgen abgleichen möchten , die beispielsweise auf eine bestimmte Weise enden

rewrite ^/old-category/(.*)\.php$ /new-category/$1;

um nur PHP-Dateien neu zu schreiben .

Wenn ich Ihre zweite Frage richtig verstanden habe, möchten Sie sie umleiten

http://example.com/old-category/

dazu

http://example.com/new-category/

Wenn das so ist, ist es bereits durch die getan rewriteRegel, wie .*Streichhölzer ZERO oder mehr Zeichen.


3
Gute Frage, gute Antwort. So viele Leute setzen das $ standardmäßig (oder lassen es standardmäßig weg), ohne darüber nachzudenken, was es tatsächlich bedeutet. Jedes Mal, wenn ich (. *) $ Sehe, schaudere ich. Ich habe es nicht ausprobiert, aber es könnte tatsächlich sein, dass das Weglassen des $ in diesem Fall eine etwas bessere Leistung haben könnte, da es eine andere Regel ist, auf die Regex prüfen muss. Es wäre interessant, eine Antwort auf diese Frage zu bekommen: D
Broco
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.