erro Mod Rewrite Ignorar regras do servidor
-
06-09-2019 - |
Pergunta
O código a seguir dá-me um erro interno do servidor e eu não posso determinar o motivo.
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
Tudo o que deve fazer é tomar a url
/test
e por sua vez, tê-lo referência
/html/test.html
nos bastidores, mas apenas se o ambiente é de produção, que é definido pela SetEnv
Nenhuma solução correta
Outras dicas
Talvez o meu mod reescrever está enferrujado, mas se eu entendo, que parece estar fazendo o oposto do que você está dizendo. Se a aplicação é a produção, então ele não vai reescrever o url (e ele ignora a regra de que seria). Não estou vendo nada que possa causar um erro interno do servidor embora.
Para fazer o que você está dizendo, você precisaria de algo como:
RewriteEngine On
SetEnv APPLICATION production
RewriteCond %{ENV:APPLICATION} !=production
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ html/$1.html
Se você ainda está tendo problemas, verifique o log de erro apache, que tem a melhor informação para Internal Server Error 500
De qualquer fazê-lo como Todd Gardner disse ou remover a regra redundante e ligam-se a condição para a segunda regra:
RewriteEngine On
RewriteCond %{ENV:APPLICATION} =production
RewriteRule ^(.*)$ html/$1.html
Além disso eu usaria essa regra, em vez de evitar recursão:
RewriteCond %{ENV:APPLICATION} =production
RewriteRule !^html/ html%{REQUEST_URI}.html
Ativar log mod reescrever para obter erros úteis.
RewriteLog rewrite_log
ReWriteLogLevel 2
Ajustar o nível de log para verbosidade.
Você tem que colocar aspas em torno da corda para compará-lo corretamente
RewriteCond %{ENV:APPLICATION} !="production"