在Apache中,RewriteRule是用于重寫URL的指令。它允許你根據特定的規則將一個URL重寫為另一個URL。RewriteRule指令有以下幾個參數:
Pattern:要匹配的URL模式。它可以是一個簡單的字符串,也可以是一個正則表達式。可以使用各種模式匹配符號,例如*、?和+等。
Substitution:要替換的URL。可以是一個相對路徑,也可以是一個完整的URL。可以使用反向引用($1、$2等)來引用Pattern中的捕獲組。
Flags:用于指定RewriteRule的行為的選項標志。可以使用多個標志,通過逗號分隔。一些常見的標志包括:
[L]:停止處理后續的RewriteRule指令。
[R]:執行外部重定向,將URL發送到客戶端瀏覽器。
[F]:返回一個403 Forbidden錯誤。
[QSA]:在重寫URL時保留查詢字符串。
[NC]:不區分大小寫匹配。
[NE]:不對URL進行編碼。
Condition:用于在執行RewriteRule之前進行條件檢查的表達式。可以使用多個條件,并使用[OR]和[AND]來組合條件。
下面是一個示例RewriteRule的語法:
RewriteRule pattern substitution [flags]
以下是一個示例:
RewriteRule ^products/([0-9]+)/?$ /product.php?id=$1 [L]
這個規則將匹配以/products/開頭,后跟一個或多個數字的URL,并將其重寫為/product.php?id=xx的形式。[L]標志指示停止處理后續的RewriteRule指令。