RewriteCond

RewriteCond

RewriteCond指令定義一條規則條件。在一條RewriteRule指令前面可能會有一條或多條RewriteCond指令,只有當自身的模式(pattern)匹配成功且這些條件也滿足時規則才被套用於當前URL處理。

基本介紹

  • 外文名:RewriteCond
  • 用途:指令定義一條規則條件
  • 語法: RewriteCond TestString
  • 性質指令格式
使用,語法,

使用

RewriteCond TestString CondPattern [flags]
RewriteCond指令定義一條規則條件。在一條RewriteRule指令前面可能會有一條或多條RewriteCond指令,只有當自身的模板(pattern)匹配成功且這些條件也滿足時規則才被套用於當前URL處理。

語法

1、 TestString是一個純文本的字元串,除了包含普通的字元外,還可以包括下列的可擴展結構:
1)$N:RewriteRule後向引用,其中(0 <= N <= 9) 。$N引用緊跟在RewriteCond後面的RewriteRule中模板中的括弧中的模板在當前URL中匹配的數據。
2)%N:RewriteCond後向引用,其中(1 <= N <= 9) 。%N引用最後一個RewriteCond的模板中的括弧中的模板在當前URL中匹配的數據。
3)${mapname:key|default}:RewriteMap擴展。
2、CondPattern是條件pattern, 即一個套用於當前實例TestString的正則表達式, 即TestString將會被計算然後與CondPattern匹配。作為一個標準的擴展正則式,CondPattern有以下補充:
1)可以在模板串前增加一個!前綴,以用表示不匹配模板。但並不是所有的test都可以加!前綴。
2)CondPattern中可以使用以下特殊變數:
'
'>CondPattern’ (大於) 將condPattern當做一個普通字元串,將它和TestString進行比較,當TestString 的字元大於CondPattern為真。
‘=CondPattern’ (等於) 將condPattern當做一個普通字元串,將它和TestString進行比較,當TestString 與CondPattern完全相同時為真.如果CondPattern只是 “” (兩個引號緊挨在一起) 此時需TestString 為空字元串方為真。
‘-d’ (是否為目錄) 將testString當做一個目錄名,檢查它是否存在以及是否是一個目錄。
‘-f’ (是否是regular file) 將testString當做一個檔案名稱,檢查它是否存在以及是否是一個regular檔案。
‘-s’ (是否為長度不為0的regular檔案) 將testString當做一個檔案名稱,檢查它是否存在以及是否是一個長度大於0的regular檔案。
‘-l’ (是否為symbolic link) 將testString當作一個檔案名稱,檢查它是否存在以及是否是一個 symbolic link。
‘-F’ (通過subrequest來檢查某檔案是否可訪問) 檢查TestString是否是一個合法的檔案,而且通過伺服器範圍內的當前設定的訪問控制進行訪問。這個檢查是通過一個內部subrequest完成的, 因此需要小心使用這個功能以降低伺服器的性能。
‘-U’ (通過subrequest來檢查某個URL是否存在) 檢查TestString是否是一個合法的URL,而且通過伺服器範圍內的當前設定的訪問控制進行訪問。這個檢查是通過一個內部subrequest完成的, 因此需要小心使用這個功能以降低伺服器的性能。
3、[flags]是第三個參數,多個標誌之間用逗號分隔。
1)’nocase|NC’ (不區分大小寫)  在擴展後的TestString和CondPattern中,比較時不區分文本的大小寫。注意,這個標誌對檔案系統和subrequest檢查沒有影響.
2)’ornext|OR’ (建立與下一個條件的或的關係)  默認的情況下,二個條件之間是AND的關係,用這個標誌將關係改為OR。例如: RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule … 如果沒有[OR]標誌,需要寫三個條件/規則.

相關詞條

熱門詞條

聯絡我們