在每個目錄上下文中重寫規則

每個目錄上下文是 <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-nameRewriteRule 的第一個引數將與 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 ^/開頭的指令永遠不會匹配任何東西。