当虚拟主机、目录上下文和 .htaccess 提供“RedirectRule”时,Apache 按什么顺序评估它?

当虚拟主机、目录上下文和 .htaccess 提供“RedirectRule”时,Apache 按什么顺序评估它?

我有几个RewriteRule里面<VirtualHost>,在<Directory>属于所述 Web 根目录的指令里面<VirtualHost>以及在.htaccess该目录里面。

问题:Apache 2.4 按什么顺序评估这些RewriteRules

我尝试阅读Apache Docs - 如何合并各部分,但我迷路了,我不确定该部分给出的规则是否适用于RewriteRule

我的简化 Apache 配置如下所示

<VirtualHost *:80>
  ServerName www.my-domain.tld
  ServerAdmin [email protected]
  DocumentRoot /var/www/htdocs

  RewriteEngine on
  RewriteRule "^/something" "/somewhat"
  RewriteRule "^/something-else" "/foo"
</VirtualHost>

<Directory "/var/www/htdocs">
  Require all granted
  AllowOverride All
  Options FollowSymLinks

  RewriteEngine on
  RewriteRule "^something" "nothing"
  RewriteRule "^something-else" "bar"

  DirectoryIndex index.html
</Directory>

.htaccess

  RewriteEngine on
  RewriteRule "^foo" "bar"
  RewriteRule "^nothing" "something"

具体来说,以下几个方面令我感到困惑:

  • .htaccess据说覆写 <Directory>,这是否意味着,一旦有一个内部,任何RewriteRule内部都会被完全忽略,就好像它根本不存在一样?<Directory>RewriteRule.htaccess
  • 据说里面的部分<VirtualHost>要被评估 任何其他部分,以允许覆盖. 恕我直言,在这种情况下,这个说法没有意义RewriteRule(或者至少是令人困惑的),因为早期的重写规则“获胜”。

相关内容