在每个目录上下文中重写规则
每个目录上下文是 <Directory> 和 </Directory> 标记之间的静态配置文件的一部分。动态配置文件的全部内容位于 .htaccess 所在的文件夹的每个目录上下文中。
每个目录上下文中的 RewriteRule 与它们所在目录的协议,主机名,端口和前缀之后以及查询字符串之前的 url 部分匹配。
在静态配置文件中
当在 url http://example.com/foo?id=1 上使用以下规则时,RewriteRule 的第一个参数中的正则表达式与 foo 匹配。删除协议(http),主机名(example.com)和此目录的前缀(/)。另一方面,查询字符串(?id=1)也被删除。
<Directory "/">
RewriteRule ^foo$ bar [L]
</Directory>
在下面的示例中,使用 url http://example.com/topic/15-my-topic-name,RewriteRule 的第一个参数将与 topic/15-my-topic-name 匹配:
<Directory "/topic/">
RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>
在动态配置文件中
当以下规则放在 www-root 文件夹中的 .htaccess 文件中,然后在 url http://example.com/foo?id=1 上使用时,第一个正则表达式与 foo 匹配。
RewriteRule ^foo$ bar [L]
在每个目录上下文中,匹配的 URL 永远不会以
/开头。在这样的背景下,以RewriteRule ^/开头的指令永远不会匹配任何东西。