Pedido da Diretiva Apache

3

No Apache 2, está a ordenação entre ErrorDocument e mod_rewrite definido e previsível? Não consigo encontrar nada na documentação sobre isso.

Por exemplo, se eu tiver o seguinte em um arquivo .htaccess (retirado do arquivo padrão .htaccess do Drupal)

ErrorDocument 404 /index.php

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^ index.php [L]
</IfModule>

que manipulará uma solicitação para um /favicon.ico, o ErrorDocument ou o RewriteRule? Isso sempre será o mesmo, servidor a servidor, ou isso pode variar dependendo de como o Apache está configurado?

    
por mpdonadio 18.05.2012 / 16:36

1 resposta

3

Sim, está definido. Mod_Rewrite só funciona em pedidos recebidos, antes do Apache ter realmente procurado pelo recurso. ErrorDocument funciona no nível de formação da resposta (basicamente o último passo).

Uma versão ligeiramente simplificada de como o Apache trabalharia neste caso:

  • Solicitação de recebimento
  • Modify Request (mod_rewrite e possivelmente outros)
  • Obter recursos especificados
  • Enviar resposta (que seria ErrorDocument se o recurso não foi encontrado)
por 18.05.2012 / 17:01

Tags