Apache指令sorting

在Apache 2中, ErrorDocument和mod_rewrite之间的顺序是否已定义和可预测? 我找不到有关此文档的任何内容。

例如,如果我有一个.htaccess文件中的以下内容(从标准的Drupal .htaccess文件中剥离)

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> 

这将处理/favicon.ico,ErrorDocument或RewriteRule的请求? 这将始终是相同的,服务器到服务器,还是可以根据Apacheconfiguration的不同而有所不同?

是的,它的定义。 在Apache实际查找资源之前,Mod_Rewrite只能处理传入的请求。 ErrorDocument函数在形成响应的层次上(基本上是最后一步)。

在这种情况下,Apache将如何工作的过于简化:

  • 接收请求
  • 修改请求(mod_rewrite和其他可能的)
  • 获取指定的资源
  • 发送响应(如果资源未find,则返回ErrorDocument)