Wie kann ich NGINX so konfigurieren, dass URL-Rewrites oder Weiterleitungen durchgeführt werden?

Melden
  1. Rewrite-Regeln mit rewrite Direktive
  2. Weiterleitungen mit return
  3. Location-Blöcke zur gezielten Steuerung
  4. Zusammenfassung und Best Practices

Die Konfiguration von URL-Rewrites oder Weiterleitungen in NGINX erfolgt hauptsächlich über Direktiven innerhalb der Server-Kontextblöcke, meist in der Konfigurationsdatei nginx.conf oder in separaten Dateien innerhalb von /etc/nginx/sites-available/. Grundsätzlich können Sie URLs, die auf Ihren Server zugreifen, umschreiben, weiterleiten oder intern auf andere Speicherorte lenken, um so SEO-freundliche URLs zu realisieren, veraltete Pfade zu ersetzen oder Benutzer auf neue URL-Strukturen weiterzuleiten.

Rewrite-Regeln mit rewrite Direktive

Mit der rewrite Direktive können Sie URLs mittels regulärer Ausdrücke umschreiben. Die Syntax lautet:

rewrite ;

Der regex-Teil definiert das Muster, das die eingehende URL beschreibt. Wird dieses Muster erfüllt, wird die URL zu replacement geändert. Je nach Flag wird die Verarbeitung beeinflusst.

Ein typisches Beispiel wäre, alle Aufrufe von /alt/irgendein-pfad auf /neu/irgendein-pfad umzuleiten:

server { listen 80; server_name beispiel.de; rewrite ^/alt/(.*)$ /neu/$1 permanent;}

Hier steht das Flag permanent für eine 301-Weiterleitung. Andere mögliche Flags sind last, break, oder redirect, die jeweils unterschiedliche Verarbeitungsstrategien der Rewrite-Regeln festlegen.

Weiterleitungen mit return

Für einfache Weiterleitungen ist die return-Direktive oft eleganter und performanter. Sie kann HTTP Statuscodes zurückgeben und eine Location angeben:

server { listen 80; server_name alt.beispiel.de; return 301 https://beispiel.de$request_uri;}

Dieses Beispiel leitet alle Anfragen von alt.beispiel.de auf die neue Domain weiter und behält dabei die ursprüngliche URI bei.

Location-Blöcke zur gezielten Steuerung

NGINX erlaubt das Platzieren von Rewrite- oder Return-Direktiven innerhalb von location-Blöcken, um etwa nur bestimmte Pfade umzuleiten oder umzuschreiben.

Ein Beispiel, in dem nur URLs innerhalb von /blog auf einen anderen Ort geleitet werden:

server { listen 80; server_name beispiel.de; location /blog { rewrite ^/blog/(.*)$ /news/$1 permanent; }}

Alternativ kann die Umleitung so ausgeführt werden:

location /blog { return 302 /news$request_uri;}

Zusammenfassung und Best Practices

Bei komplexeren Rewrite-Regeln empfiehlt es sich, reguläre Ausdrücke sorgfältig zu testen, da falsche Patterns zu Endlosschleifen führen können. Verwenden Sie wenn möglich return für einfache Weiterleitungen, da diese effizienter und verständlicher sind.

Nach Änderungen an der Konfiguration sollten Sie immer die Syntax mit nginx -t überprüfen und NGINX mit systemctl reload nginx oder einem ähnlichen Befehl neu laden, damit die Änderungen wirksam werden without downtime.

Zusätzlich ist das Logging Ihrer Rewrite-Operationen hilfreich: Mit erhöhtem Loglevel oder Debugging können Sie nachvollziehen, wie URLs verarbeitet werden.

0

Kommentare