Errore di Mod Rewrite Skip Regole Server
-
06-09-2019 - |
Domanda
Il seguente codice mi dà un errore interno del server e non riesco a capire perché.
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
Tutto ciò che deve fare è prendere l'url
/test
e ruotare lo hanno riferimento
/html/test.html
dietro le quinte, ma solo se l'ambiente è la produzione, che è impostato dal SetEnv
Nessuna soluzione corretta
Altri suggerimenti
Forse il mio mod rewrite è arrugginito, ma se ho capito bene, che sembra fare il contrario di quello che stai dicendo. Se l'applicazione è la produzione, allora non riscrivere l'url (e salta la norma che). Non vedo nulla che possa causare un errore interno del server però.
Per fare quello che stai dicendo, si avrebbe bisogno di qualcosa di simile a:
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
Se si continua ad avere problemi, controllare il log degli errori di Apache, che ha le migliori informazioni per Internal Server Error 500
In entrambi farlo come Todd Gardner detto o rimuovere la regola ridondante e legare la condizione per la seconda regola:
RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html
Inoltre mi piacerebbe usare questa regola invece per evitare la ricorsione:
RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html
attivare la registrazione mod rewrite per ottenere gli errori di utili.
RewriteLog rewrite_log
ReWriteLogLevel 2
Regolare il livello di log per verbosità.
Devi mettere le virgolette attorno alla stringa di confrontare correttamente
RewriteCond %{ENV:APPLICATION} !="production"