淺析Apache中RewriteCond規(guī)則參數(shù)的詳細(xì)介紹
更新時(shí)間:2013年06月30日 09:28:03 作者:
Apache中 RewriteCond語(yǔ)句對(duì)于我來(lái)說(shuō)一直是個(gè)難點(diǎn),多次試圖去把它搞明白,都沒有結(jié)構(gòu),這次我終于算大概知道它的意思了
RewriteCond就像我們程序中的if語(yǔ)句一樣,表示如果符合某個(gè)或某幾個(gè)條件則執(zhí)行RewriteCond下面緊鄰的RewriteRule語(yǔ)句,這就是RewriteCond最原始、基礎(chǔ)的功能,為了方便理解,下面來(lái)看看幾個(gè)例子。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.*
RewriteRule index.php index.m.php
RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule index.php index.L.php
RewriteRule index.php index.b.php
上面語(yǔ)句的作用是當(dāng)你是用FF瀏覽器訪問(wèn)index.php這個(gè)文件的時(shí)候,會(huì)自動(dòng)讓你訪問(wèn)到index.m.php這個(gè)文件,當(dāng)你是用一些移動(dòng)終端訪問(wèn)的 時(shí)候,會(huì)讓你對(duì)index.php這個(gè)文件的訪問(wèn)實(shí)際訪問(wèn)的是index.L.php去,如果你是用其它的瀏覽器訪問(wèn)的時(shí)候,會(huì)讓你跳到 index.b.php。在說(shuō)形象一點(diǎn),上面的語(yǔ)句就等同于程序里面的下面語(yǔ)句(依PHP語(yǔ)句為例):
if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
//跳轉(zhuǎn)到對(duì)index.m.php的訪問(wèn)
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
//跳轉(zhuǎn)到對(duì)index.L.php的訪問(wèn)
}
else
//跳轉(zhuǎn)到對(duì)index.b.php的訪問(wèn)
在看例2:
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
上面語(yǔ)句的作用是如果你訪問(wèn)的上一個(gè)頁(yè)面的主機(jī)地址是www.test.cn,則無(wú)論你當(dāng)前訪問(wèn)的是哪個(gè)頁(yè)面,都會(huì)跳轉(zhuǎn)到對(duì)test.php的訪問(wèn)。
在看例三:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php
上面語(yǔ)句的作用是如果你的地址是host1或host2或host3的時(shí)候,則就跳到對(duì)test.php。從這里可以看出,RewriteCond語(yǔ)句之間默認(rèn)的是AND,如果想要OR,則要明確的寫出來(lái)。
下面是自己收藏的一些有用的重寫規(guī)則:
RewriteCond %{REQUEST_FILENAME} !-f //如果文件存在,就直接訪問(wèn)文件,不進(jìn)行下面的RewriteRule.(不是文件或文件不存在就執(zhí)行重寫)
RewriteCond %{REQUEST_FILENAME} !-d //#如果目錄存在就直接訪問(wèn)目錄不進(jìn)行RewriteRule
RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#如果是這些后綴的文件,就直接訪問(wèn)文件,不進(jìn)行Rewrite
復(fù)制代碼 代碼如下:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.*
RewriteRule index.php index.m.php
RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule index.php index.L.php
RewriteRule index.php index.b.php
上面語(yǔ)句的作用是當(dāng)你是用FF瀏覽器訪問(wèn)index.php這個(gè)文件的時(shí)候,會(huì)自動(dòng)讓你訪問(wèn)到index.m.php這個(gè)文件,當(dāng)你是用一些移動(dòng)終端訪問(wèn)的 時(shí)候,會(huì)讓你對(duì)index.php這個(gè)文件的訪問(wèn)實(shí)際訪問(wèn)的是index.L.php去,如果你是用其它的瀏覽器訪問(wèn)的時(shí)候,會(huì)讓你跳到 index.b.php。在說(shuō)形象一點(diǎn),上面的語(yǔ)句就等同于程序里面的下面語(yǔ)句(依PHP語(yǔ)句為例):
復(fù)制代碼 代碼如下:
if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
//跳轉(zhuǎn)到對(duì)index.m.php的訪問(wèn)
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
//跳轉(zhuǎn)到對(duì)index.L.php的訪問(wèn)
}
else
//跳轉(zhuǎn)到對(duì)index.b.php的訪問(wèn)
在看例2:
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
上面語(yǔ)句的作用是如果你訪問(wèn)的上一個(gè)頁(yè)面的主機(jī)地址是www.test.cn,則無(wú)論你當(dāng)前訪問(wèn)的是哪個(gè)頁(yè)面,都會(huì)跳轉(zhuǎn)到對(duì)test.php的訪問(wèn)。
在看例三:
復(fù)制代碼 代碼如下:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php
上面語(yǔ)句的作用是如果你的地址是host1或host2或host3的時(shí)候,則就跳到對(duì)test.php。從這里可以看出,RewriteCond語(yǔ)句之間默認(rèn)的是AND,如果想要OR,則要明確的寫出來(lái)。
下面是自己收藏的一些有用的重寫規(guī)則:
RewriteCond %{REQUEST_FILENAME} !-f //如果文件存在,就直接訪問(wèn)文件,不進(jìn)行下面的RewriteRule.(不是文件或文件不存在就執(zhí)行重寫)
RewriteCond %{REQUEST_FILENAME} !-d //#如果目錄存在就直接訪問(wèn)目錄不進(jìn)行RewriteRule
RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#如果是這些后綴的文件,就直接訪問(wèn)文件,不進(jìn)行Rewrite
您可能感興趣的文章:
- 開啟Apache mod_rewrite模塊示例代碼
- 13個(gè)實(shí)用的Apache Rewrite重寫規(guī)則
- Apache偽靜態(tài)Rewrite詳解
- 如何在Ubuntu下啟動(dòng)Apache的Rewrite功能
- 淺談apache和nginx的rewrite的區(qū)別
- Apache Rewrite實(shí)現(xiàn)URL的301跳轉(zhuǎn)和域名跳轉(zhuǎn)
- apache中通過(guò)mod_rewrite實(shí)現(xiàn)偽靜態(tài)頁(yè)面的方法
- Linux下Apache安裝/增加mod_rewrite模塊的方法
- Apache Rewrite url重定向功能的簡(jiǎn)單配置
- 讓Apache支持Rewrite靜態(tài)頁(yè)面重寫的方法
- Linux下Apache安裝/增加mod_rewrite模塊的方法
- apache urlrewrite防盜鏈功能配置
- 學(xué)習(xí)Apache的mod rewrite、access寫法
- Apache rewrite的重寫相關(guān)的參數(shù)說(shuō)明
- Apache中利用mod_rewrite實(shí)現(xiàn)防盜鏈
- Apache rewrite重寫規(guī)則的常見應(yīng)用
- apache rewrite_module模塊使用教程
- apache的rewrite規(guī)則使用說(shuō)明
相關(guān)文章
php設(shè)計(jì)模式之單例、多例設(shè)計(jì)模式的應(yīng)用分析
本篇文章是對(duì)php設(shè)計(jì)模式中的單例與多例設(shè)計(jì)模式的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP檢測(cè)一個(gè)數(shù)組有沒有定義的方法步驟
在本篇文章里小編給大家分享的是關(guān)于PHP檢測(cè)一個(gè)數(shù)組有沒有定義的方法步驟詳解,有需要的朋友們參考下。2019-07-07