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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top