<?xml version='1.0' encoding='UTF-8'?>
<elementos_gw>
  <documento>
    <id>2830</id>
    <autor>5</autor>
    <nome>RewriteRule executando duas vezes</nome>
    <nome_facil>rewriterule executando duas vezes</nome_facil>
    <criacao>2012-02-17 16:31:53</criacao>
    <alteracao>2012-02-17 17:19:58</alteracao>
    <texto>Às vezes pode parecer que o {{{RewriteRule}}} executa duas vezes, mesmo usando a diretiva {{{[L]}}}.

A verdade é que //ele executa, mesmo!// Mas só quando há alteração na URL.

A diretiva {{{[L]}}} impede a execução do código que vem em seguida, mas se houve alteração na URL, a nova URL será reprocessada desde o início.

Há muitas soluções para isso (com o uso do {{{RewriteCond}}}, por exemplo), mas a que eu uso é colocar, no início das regras, uma regra dizendo que, se a URL já está do jeito que eu quero, não muda nada:

{{{
RewriteEngine on

# index is the last rule - is what I want, so doesn&#039;t change anything and go to it (thank&#039;s to [L])!
RewriteRule ^index.php$ - [L,QSA]

# get user id - URL changed, so [L] will cause the new URL to be reparsed - and so it will be matched on the above rule.
RewriteRule ^user/(.*)$ index.php?user=$1 [L,QSA]

# in case of user/..., following rules don&#039;t apply, since the above rule has [L]
# ...
}}}

Veja esta dica em [http://rubychallenger.blogspot.com/2012/02/rewriterule-running-twice.html inglês].
</texto>
    <publico>1</publico>
    <original>0</original>
    <anterior>0</anterior>
    <versao>0</versao>
    <traducao>0</traducao>
    <propriedade>
      <nome>categ</nome>
      <valor>list</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>categ</nome>
      <valor>dicas</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>categ</nome>
      <valor>artigos</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>categ</nome>
      <valor>técnico</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>assunto</nome>
      <valor>.htaccess</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>assunto</nome>
      <valor>mod_rewrite</valor>
      <publico>1</publico>
    </propriedade>
  </documento>
</elementos_gw>
