Ich möchte alle URLs mit Unterstrichen auf ihre gestrichelten Äquivalent umleiten.Ausschließen von Verzeichnis von Regex-Weiterleitung
z. /nederland/amsterdam/car_rental
wird /nederland/amsterdam/car-rental
. Dazu benutze ich die hier beschriebene Technik: How to replace underscore to dash with Nginx. So ist mein Standort Block abgestimmt:
location ~ (_)
Aber ich nur will dies auf URLs tun nicht im /admin
Namespace. Um dies zu erreichen, habe ich versucht, die Regex mit einem negativen Lookup zu kombinieren: Regular expression to match a line that doesn't contain a word?. Die Lage passt jetzt mit:
(?=^(?!\/admin))(?=([^_]*))
Rubular berichtet die Zeichenfolge /nederland/amsterdam/car_rental
die Regex übereinstimmen, während /admin/stats_dashboard
nicht abgestimmt ist, so wie ich es will. Wenn ich diese Regel jedoch auf die nginx-Konfiguration anwende, endet die Site in Weiterleitungsschleifen. Gibt es etwas, was ich übersehen habe?
UPDATE: Ich möchte eigentlich nichts im Namespace /admin
umschreiben. Das Unterstrich-zu-Strich-Neuschreiben sollte nur für alle URLs statt im Namespace /admin
erfolgen.
Dieser Beispielcode ist nicht effizient, weil Sie mehrere Male durch '$ uri' gehen müssen, um alle Unterstriche loszuwerden. – cnst