Pregunta

El siguiente código me da un error interno del servidor y no puedo determinar por qué.

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

Todo lo que debe hacer es tomar la url

/test

y gire tenerlo de referencia

/html/test.html

detrás de las escenas, pero sólo si el ambiente es la producción, que se establece por el SetEnv

No hay solución correcta

Otros consejos

Tal vez mi mod reescribir está oxidado, pero si yo lo entiendo, que parece estar haciendo lo contrario de lo que está diciendo. Si la aplicación es la producción, entonces no va a volver a escribir la dirección URL (y se salta la Regla que lo haría). No estoy viendo nada que pueda causar un error interno del servidor sin embargo.

Para hacer lo que está diciendo, lo que se necesita algo como:

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

Si todavía tiene problemas, compruebe su registro de errores de Apache, que cuenta con la mejor información de error de servidor interno 500

Cualquiera de hacerlo como Todd Gardner dicho o eliminar la regla redundante y obligar a la condición a la segunda regla:

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

Además me gustaría usar esta regla en lugar de evitar la repetición:

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

activar el registro mod reescribir para obtener errores útiles.

RewriteLog rewrite_log
ReWriteLogLevel 2

Ajuste el nivel de registro para la verbosidad.

Hay que poner comillas alrededor de la cadena de comparar correctamente

RewriteCond %{ENV:APPLICATION} !="production"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top