Fazendo algumas correções na resposta de Redmumba ...
RewriteEngine on
RewriteMap esc int:escape
RewriteCond $0 !^/media/
RewriteRule .* /index.php?url=$0\%3f${esc:%{QUERY_STRING}} [B]
Use o $0
backreference em vez de %{PATH_INFO}
para se referir ao caminho de entrada. No RewriteRule
, adicione o sinalizador B
para escapar novamente do URL (conforme explicado no mod_rewrite docs ). O restante da regra está presente para permitir a duplicação da string de consulta original, para que ela possa ser recuperada quando o parâmetro url
não estiver em escape pelo seu index.php
.
Como alternativa, se o seu index.php
espera usar sua string de consulta diretamente, em vez de decodificá-la de dentro do parâmetro url
, você usaria
RewriteEngine on
RewriteCond $0 !^/media/
RewriteRule .* /index.php?url=$0 [B,QSA]
Esta é realmente uma tradução mais fiel da regra de reescrita do LighTTPD, mas você corre o risco de um conflito caso a string de consulta de entrada contenha um parâmetro url
.