Rewrite-Regeln aus .htaccess nach Nginx übertragen

Der Konverter liest die Rewrite-Regeln einer .htaccess-Datei und schreibt die passenden Nginx-Zeilen: RewriteRule wird zu rewrite, RewriteCond zu den if-Blöcken davor. Alles läuft in der Seite, die Regeln werden nicht hochgeladen.

Übersetzt werden nur Rewrite-Regeln. Alles andere — RewriteBase, Redirect, Header, Options und ähnliche Apache-Direktiven — steht als Kommentar am Ende des Ergebnisses, statt übernommen zu werden; so siehst du, was noch entschieden werden muss.

  1. Füge die Rewrite-Regeln aus deiner .htaccess-Datei in das Feld ein.
  2. Klicke auf „.htaccess-zu-Nginx-Rewrite-Konverter“, um das Ergebnis zu erzeugen.
  3. Lies den Kommentar am Ende: er nennt die Direktiven und Flags, die nicht umgesetzt wurden.
  4. Setze die Ausgabe in den server-Block ein und führe nginx -t aus, bevor du neu lädst.
  5. Klicke auf Leeren, um das Formular für den nächsten Lauf zurückzusetzen.

Was übersetzt wird, was gemeldet wird und wie du das Ergebnis prüfst

Was der Konverter übersetzt

RewriteRule-Zeilen werden zu rewrite-Anweisungen mit demselben Muster: [L] wird last, [R=301] permanent, [R=302] und [R] redirect, und [NC] wird als (?i) in das Muster geschrieben, damit die Suche ohne Rücksicht auf Groß- und Kleinschreibung bleibt. [E=NAME:value] wird zu set $NAME value; — die Form, die nginx akzeptiert.

RewriteCond-Zeilen werden zu if-Blöcken, die eine Variable $rule_N setzen; die geschützte Regel läuft in if ($rule_N = "..."). Auch Dateitests werden übersetzt: -f wird zu !-f, wenn negiert, -d bleibt -d, und -s wird zu -e.

Was gemeldet statt umgesetzt wird

Apache-Direktiven ohne Nginx-Entsprechung werden nicht stillschweigend verworfen: das Ergebnis endet mit einem Kommentar, der sie auflistet, zusammen mit Flags wie S= oder T=, die in Nginx keine Entsprechung haben.

Regeln mit [F], [G] oder [P] werden ebenfalls nicht umgesetzt, weil ein unbedingtes 403 oder ein Rewrite über einen Proxy in nginx anders wirken würde: das Werkzeug gibt die Regel und das von Hand zu ergänzende Konstrukt aus. Eine Bedingung, die es nicht lesen kann, wird als #ignored markiert, und die geschützte Regel bleibt inaktiv, bis du diese Bedingung neu schreibst.

Grenzen und Prüfung

Die Eingabe ist auf 6.000 Zeichen begrenzt; teile große .htaccess-Dateien auf. Das Ergebnis ist ein Ausgangspunkt, keine fertige Konfiguration: Anführungszeichen, location-Blöcke und Serverkontext hängen von deinem Aufbau ab.

Setze den erzeugten Block in einen server-Block, führe nginx -t aus und teste eine Weiterleitung im Browser, bevor du umstellst. Die Umwandlung läuft lokal in JavaScript: die Regeln verlassen die Seite nicht und funktionieren auch offline.

Zuletzt verwendet: