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