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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top