mod de reescritura de error Omitir reglas del servidor
-
06-09-2019 - |
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"