在每個目錄上下文中重寫規則
每個目錄上下文是 <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 ^/開頭的指令永遠不會匹配任何東西。