我有几个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
(或者至少是令人困惑的),因为早期的重写规则“获胜”。