国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > Apache > 正文

Apache中RewriteCond指令詳解

2024-08-27 18:29:28
字體:
供稿:網(wǎng)友

在 Apache中應(yīng)用mod_rewrite時(shí),我們往往需要對(duì).htaccess文件進(jìn)行重寫規(guī)則的定義,而RewriteCond指令定義了重寫規(guī)則生效的條件,即在一個(gè)RewriteRule指令之前可以有一個(gè)或多個(gè)RewriteCond指令。條件之后的重寫規(guī)則僅在當(dāng)前URI與Pattern匹配并且滿足此處的條件時(shí)才會(huì)起作用。不難發(fā)現(xiàn),RewriteCond指令和PHP中的if語句的條件表達(dá)式十分類似。

RewriteCond指令的定義

說明 定義重寫發(fā)生的條件
語法 RewriteCond TestString CondPattern [flags]
作用域 server config, virtual host, directory, .htaccess
覆蓋項(xiàng) FileInfo
狀態(tài) 擴(kuò)展(E)
模塊 mod_rewrite

可以看出,RewriteCond指令定義了重寫規(guī)則生效的條件,整個(gè)RewriteCond語句的意思就是:某個(gè)測(cè)試字符串(TestString)如果滿足了條件模式(CondPattern),則進(jìn)行其后的RewriteRule

RewriteCond指令的TestString

TestString是一個(gè)純文本的(測(cè)試)字符串,,但是還可以包含下列可擴(kuò)展的成分:

1,RewriteRule反向引用,引用方法是:

$N(0<= N<= 9)引用當(dāng)前(帶有若干RewriteRule指令的)RewriteCond中的與Pattern匹配的分組成分(正則表達(dá)式中的子模式)。

2,RewriteCond反向引用,引用方法是:

%N(1<= N<=9)引用當(dāng)前若干RewriteCond條件中最后符合的條件中的分組成分(正則表達(dá)式中的子模式)。

3,服務(wù)器變量 ,引用方法是:

%{NAME_OF_VARIABLE}

NAME_OF_VARIABLE可以是下表列出的字符串之一:

HTTP頭 連接與請(qǐng)求  

HTTP_USER_AGENTHTTP_REFERER

HTTP_COOKIE

HTTP_FORWARDED

HTTP_HOST

HTTP_PROXY_CONNECTION

HTTP_ACCEPT

REMOTE_ADDRREMOTE_HOST

REMOTE_PORT

REMOTE_USER

REMOTE_IDENT

REQUEST_METHOD

SCRIPT_FILENAME

PATH_INFO

QUERY_STRING

AUTH_TYPE

 
服務(wù)器自身 日期和時(shí)間 其它

DOCUMENT_ROOT

SERVER_ADMIN

SERVER_NAME

SERVER_ADDR

SERVER_PORT

SERVER_PROTOCOL

SERVER_SOFTWARE

TIME_YEAR

TIME_MON

TIME_DAY

TIME_HOUR

TIME_MIN

TIME_SEC

TIME_WDAY

TIME

API_VERSION

THE_REQUEST

REQUEST_URI

REQUEST_FILENAME

IS_SUBREQ

HTTPS

這些變量都對(duì)應(yīng)于類似命名的HTTP MIME頭、Apache服務(wù)器的C變量、Unix系統(tǒng)中的struct tm字段,其中的大多數(shù)在其他的手冊(cè)或者CGI規(guī)范中都有說明。

RewriteCond指令的condPattern

CondPattern是條件模式,即一個(gè)應(yīng)用于當(dāng)前TestString實(shí)例的正則表達(dá)式。TestString將被首先計(jì)算,然后再與CondPattern匹配。

可以在CondPattern串的開頭使用'!'(驚嘆號(hào))來指定不匹配。

CondPatterns是一個(gè)perl兼容的正則表達(dá)式,有若干特殊的變種。除了正則表達(dá)式的標(biāo)準(zhǔn)用法,還有下列若干增補(bǔ)用法:

1,'<CondPattern'(詞典順序的小于)將CondPattern視為純字符串,與TestString按詞典順序進(jìn)行比較。如果TestString小于CondPattern則為真。

2,'>CondPattern'(詞典順序的大于)將CondPattern視為純字符串,與TestString按詞典順序進(jìn)行比較。如果TestString大于CondPattern則為真。

3,'=CondPattern'(詞典順序的等于)將CondPattern視為純字符串,與TestString按詞典順序進(jìn)行比較。如果TestString等于 CondPattern(兩個(gè)字符串逐個(gè)字符地完全相等)則為真。如果CondPattern是""(兩個(gè)雙引號(hào)),則TestString將與空字符串進(jìn)行比較。

4,'-d'(目錄)將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的目錄。

5,'-f'(常規(guī)文件)將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的常規(guī)文件。

6,'-s'(非空的常規(guī)文件)將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的、尺寸大于0的常規(guī)文件。

7,'-l'(符號(hào)連接)將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的符號(hào)連接。

8,'-x'(可執(zhí)行)將TestString視為一個(gè)路徑名并測(cè)試它是否為一個(gè)存在的、具有可執(zhí)行權(quán)限的文件。該權(quán)限由操作系統(tǒng)檢測(cè)。

9,'-F'(對(duì)子請(qǐng)求存在的文件)檢查TestString是否為一個(gè)有效的文件,而且可以在服務(wù)器當(dāng)前的訪問控制配置下被訪問。它使用一個(gè)內(nèi)部子請(qǐng)求來做檢查,由于會(huì)降低服務(wù)器的性能,所以請(qǐng)謹(jǐn)慎使用!

10,'-U'(對(duì)子請(qǐng)求存在的URL)檢查TestString是否為一個(gè)有效的URL,而且可以在服務(wù)器當(dāng)前的訪問控制配置下被訪問。它使用一個(gè)內(nèi)部子請(qǐng)求來做檢查,由于會(huì)降低服務(wù)器的性能,所以請(qǐng)謹(jǐn)慎使用!

注意:所有這些測(cè)試都可以用驚嘆號(hào)作前綴('!')以實(shí)現(xiàn)測(cè)試條件的反轉(zhuǎn),并且還可以在CondPattern之后追加特殊的標(biāo)記[flags]作為RewriteCond指令的第三個(gè)參數(shù)。

RewriteCond指令的flags

flags是一個(gè)以逗號(hào)分隔的以下標(biāo)記的列表:

1,'nocase|NC'(忽略大小寫):它使測(cè)試忽略大小寫,擴(kuò)展后的TestString和CondPattern中'A-Z' 和'a-z'是沒有區(qū)別的。此標(biāo)記僅用于TestString和CondPattern的比較,而對(duì)文件系統(tǒng)和子請(qǐng)求的檢查不起作用。

2,'ornext|OR'(或下一條件):它以O(shè)R方式組合若干規(guī)則的條件,而不是隱含的AND。

RewriteCond實(shí)例

RewriteCond %{REMOTE_HOST} ^host1.* [OR]

RewriteCond %{REMOTE_HOST} ^host2.* [OR]

RewriteCond %{REMOTE_HOST} ^host3.*

RewriteRule ... 針對(duì)這3個(gè)主機(jī)的規(guī)則集 ...

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 孙吴县| 宁安市| 祥云县| 黄山市| 九龙县| 蒙山县| 宁陕县| 苏州市| 黄石市| 景泰县| 河源市| 江门市| 桃江县| 万州区| 观塘区| 武威市| 乐昌市| 青州市| 宁海县| 黄陵县| 新化县| 彰化市| 灵宝市| 榆中县| 安西县| 环江| 靖宇县| 通城县| 泸州市| 汉源县| 施甸县| 新田县| 法库县| 伊川县| 东兴市| 邢台市| 垫江县| 曲水县| 图木舒克市| 视频| 东平县|