URLs limpos no IIS com mod_rewrite
-
25-09-2019 - |
Pergunta
Eu tenho um problema mod_rewrite. Ou com mais precisão, tenho um problema com o ISAPI_REWRITE, que é um clone Mod_rewrite para o IIS. Especificamente, o ISAPI_REWRITE V3 em execução no IIS 7. O objetivo é se comportar de forma idêntica ao mod_rewrite, por isso espero que meu problema se aplique ao mod_rewrite também.
Meu problema se resume a isso: eu tenho um script bar.php
que eu quero acessar via URL foo
. Eu primeiro reescrevo foo
para bar
. Em seguida, tente converter o URL limpo em um nome de arquivo real.
RewriteRule ^foo$ bar
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php
o RewriteCond
está falhando porque ${REQUEST_FILENAME}
Ainda diz "foo" em vez de "bar". Não é atualizado após a primeira reescrita.
Como posso fazer isso funcionar? Eu poderia consertar isso simplesmente escrevendo RewriteRule ^foo$ bar.php
. Mas eu preferiria fortemente manter as regras de remapeamento de URL separadas das regras de extensão de arquivo.
Solução
Resposta provisória ...
RewriteCond %{DOCUMENT_ROOT}/$0.php -f
Usando $0
Tenho acesso ao URL mais recente de reescrito, o que me deixa feliz. Mas eu tenho que adicionar %{DOCUMENT_ROOT}
Para transformar isso em um nome de arquivo, o que me deixa triste. Um pouco de um kludge.