Frage

Der folgende Code gibt mir einen internen Server-Fehler und ich kann nicht feststellen, warum.

RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1] 
RewriteRule ^(.*)$ html/$1.html

Alles, was es tun soll, ist die URL nehmen

/test

und drehen Sie haben es Referenz

/html/test.html

hinter den Kulissen, aber nur, wenn die Umwelt ist, die Produktion, die von der SetEnv gesetzt

Keine korrekte Lösung

Andere Tipps

Vielleicht ist meine mod Rewrite ist rostig, aber wenn ich es verstehe, scheint, dass genau das Gegenteil von dem, was Sie sagen. Wenn die Anwendung der Produktion ist, dann wird es nicht die URL neu schreiben (und überspringt es die Regel, dass würde). Ich bin nicht etwas zu sehen, dass, obwohl ein interner Serverfehler verursachen würde.

Zu tun, was Sie sagen, würden Sie brauchen so etwas wie:

RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1] 
RewriteRule ^(.*)$ html/$1.html

Wenn Sie immer noch Probleme haben, überprüfen Sie die Apache-Fehlerprotokoll, das die besten Infos für Internal Server Error hat 500

Entweder mache es wie Todd Gardner sagte oder die redundante Regel entfernen und die Bedingung für die zweite Regel binden:

RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html

Außerdem würde ich diese Regel verwenden, statt Rekursion zu vermeiden:

RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html

Schalten Sie mod Rewrite-Protokollierung nützlich Fehler zu erhalten.

RewriteLog rewrite_log
ReWriteLogLevel 2

Stellen Sie die Protokollebene für Ausführlichkeit.

Sie haben Anführungszeichen zu setzen, um die Zeichenkette, die es richtig vergleichen

RewriteCond %{ENV:APPLICATION} !="production"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top