url重寫IIRF(Ionic's Isapi Rewrite Filter)手冊(cè)第1/2頁
更新時(shí)間:2008年07月29日 10:18:00 作者:
IIRF與ISAPI_Rewrite的規(guī)劃區(qū)別只在于IIRF不需要使用轉(zhuǎn)義字符\,而ISAPI_Rewrite則需要使用轉(zhuǎn)義字符\.
說明
IIRF與ISAPI_Rewrite的規(guī)劃區(qū)別只在于IIRF不需要使用轉(zhuǎn)義字符\,而ISAPI_Rewrite則需要使用轉(zhuǎn)義字符\.
介紹
IIRF是一款開源的重寫URL過濾器,類似于Apache的URL重寫,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新編譯)開發(fā)。它可以運(yùn)行在IIS5.0+,支持ASP,ASP.NET,PHP等許多格式。相對(duì)比ASP.NET2.0自帶的URL重寫,具有更好的性能和許多我們所需要特性,重要的一點(diǎn)在于:它可以支持無擴(kuò)展名的URL(例如:cnlbogs.com/****,你無需在創(chuàng)建一個(gè)默認(rèn)的default.aspx文件,IIRF自動(dòng)會(huì)幫你解析),讓URL更加的方便我們記憶,也能進(jìn)一步提高搜索的排名?IIRF能夠在aspnet_isapi提前捕獲我們所請(qǐng)求的URL進(jìn)行處理,如果我們?cè)L問cnlbogs.com/a.aspx,需要獲取cnlbogs.com/a.htm,步驟需要(iis-aspnet_isapi),通過IIRF,我們可以直接跳aspnet_isapi.dll,直接訪問a.htm,要知道,這種方式在ASP.NET是無法實(shí)現(xiàn)的。
IIRF跟ASP.NET重寫URL一樣,它也是基于正則的方式來匹配,具有LOG記錄,請(qǐng)求的條件判斷。還是進(jìn)入正題吧。
安裝
IIRF安裝需要我們手動(dòng)操作來完成。不過。也是很方便了。
1 將IsapiRewrite4.dll, IsapiRewrite4.ini復(fù)制到c:\windows\system32\inetsrv(你也可以復(fù)制到其它適當(dāng)?shù)奈募A下面)。
IsapiRewrite4.ini是IIRF配置文件,每次該文件更改之后,IIRF會(huì)自動(dòng)重新加載該文件,無需重啟IIS來重新加載配置,如果您修改后INI文件后格式不正確,IIRF將會(huì)自動(dòng)獲取最后正確加載的配置文件。
2 打開IIS管理器,選擇“默認(rèn)網(wǎng)站”,右擊“屬性”,選擇“ISAPI篩選器”,點(diǎn)擊“添加”,輸入篩選器名稱:Ionic Rewriter,可執(zhí)行文件選擇上面復(fù)制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件,點(diǎn)“確定”。
3重啟IISADMIN service服務(wù)。(在計(jì)算機(jī)管理----windows服務(wù)里面)
4 完成。
日志
IIRF能夠?qū)NI配置文件加載,用戶的URL請(qǐng)求記錄都會(huì)保存到指定的日志文件里。因?yàn)樗哂泻艽蟮男阅荛_銷,因此建議將它日志的記錄等級(jí)設(shè)為0,只有
為了方便調(diào)試的時(shí)候時(shí)候,可以設(shè)置為5,
RewriteLog 保存的日志路徑,如 c:\temp\iirfLog.out
RewriteLogLevel {0,1,2,3,4,5} 日志的等級(jí),默認(rèn)值為0
0 –不會(huì)記錄日志
1- 少許的日志
2- 比較多的日志
3- 比較詳細(xì)的日志
4- 詳細(xì)的日志(4),并會(huì)跟蹤server variable和替換的字符串。
5- 詳細(xì)的日志(5),包括日志文件更改的事件,建議方便調(diào)試的時(shí)候使用
正則
正則的語法跟.NET一樣,只不過是格式不一樣而已。所以我也不在詳細(xì)介紹。具體有關(guān)正則的說明大家可以用GOOGLE搜索。
格式:
RewriteRule <url-pattern> <replacement-string> [<modifiers>]
url-pattern:匹配的正則表達(dá)式(必需)
replacement-string:要替換的字符串(必需)
modifiers:有關(guān)對(duì)RewriteRule的操作標(biāo)記??蛇x選項(xiàng)。在下面我會(huì)說明
默認(rèn)下IIRF的url-pattern,replacement-string正則的前面已經(jīng)帶了主機(jī)頭的。
為了方便描述,直接看幾個(gè)示例(以下示例基本全部來源IIRF文檔)
RewriteRule ^/original/(.*).php /modified/$1.aspx
源:http://xxx/original/index.php
目標(biāo):http://xxx/modified/index.aspx
RewriteRule ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG) /chiesa/pics.aspx?d=$1&p=$2.$3
源:http://xxx/dinoch/album/30/1.jpg
目標(biāo):http://xxx/chiesa/pics.aspx?d=30&p=1.jpg
比較簡單,主要還在于modifiers的功能。下面列舉了它的所有值,允許組合(如[R,L])。
R = Redirect(URL跳轉(zhuǎn)到<replacement-string>地址)
NF = Not found(返回404錯(cuò)誤給用戶,但該文件并未移除,還是保留在網(wǎng)站中)
L = Last test if match(如果已經(jīng)匹配,將不在繼續(xù)匹配下去)
F = Forbidden(跟NF標(biāo)志相似,)
I = Do case-insensitive matching
U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服務(wù)器變量中。)
[R] or [R=code]
就像跟我們?cè)贏SP.NET使用的Redirect方法一樣,重新改變?yōu)g覽器的方向,跳轉(zhuǎn)到新的指定的URL中。
[R=code]允許我們指定特定的HTTP狀態(tài)返回碼。只能介于301到399。如果超出這個(gè)范圍。默認(rèn)會(huì)是使用302狀態(tài)。
RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]
源:http://xxx/goto.aspx?r=http://www.google.com/
目標(biāo):http://www.google.com
[L]
上面已經(jīng)簡單介紹過。不在說明
[NF]
上面已經(jīng)簡單介紹過。它還可以跟RewriteCond一起配合,來實(shí)現(xiàn)自定義的404錯(cuò)誤請(qǐng)求。
特別要注意,你所要匹配的文件必須存在,替換的字符串不允許是存在文件名
RewriteRule ^/1008.aspx$ /1.aspx [NF]
1008.aspx文件需要存在,1.aspx不存在,否則無法正常達(dá)到我們的結(jié)果。
(很奇怪,我不知道是不是我搞錯(cuò)了。但我最終測試的結(jié)果確實(shí)是這樣,文檔也沒詳細(xì)說明過,有知道的朋友可以告訴我一下原因)
[F]
不在說明。
[I]
模糊匹配
[U]
保存原始的url到HTTP_X_REWRITE_URL服務(wù)器變量中。
在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]獲取原始值。
IIRF與ISAPI_Rewrite的規(guī)劃區(qū)別只在于IIRF不需要使用轉(zhuǎn)義字符\,而ISAPI_Rewrite則需要使用轉(zhuǎn)義字符\.
介紹
IIRF是一款開源的重寫URL過濾器,類似于Apache的URL重寫,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新編譯)開發(fā)。它可以運(yùn)行在IIS5.0+,支持ASP,ASP.NET,PHP等許多格式。相對(duì)比ASP.NET2.0自帶的URL重寫,具有更好的性能和許多我們所需要特性,重要的一點(diǎn)在于:它可以支持無擴(kuò)展名的URL(例如:cnlbogs.com/****,你無需在創(chuàng)建一個(gè)默認(rèn)的default.aspx文件,IIRF自動(dòng)會(huì)幫你解析),讓URL更加的方便我們記憶,也能進(jìn)一步提高搜索的排名?IIRF能夠在aspnet_isapi提前捕獲我們所請(qǐng)求的URL進(jìn)行處理,如果我們?cè)L問cnlbogs.com/a.aspx,需要獲取cnlbogs.com/a.htm,步驟需要(iis-aspnet_isapi),通過IIRF,我們可以直接跳aspnet_isapi.dll,直接訪問a.htm,要知道,這種方式在ASP.NET是無法實(shí)現(xiàn)的。
IIRF跟ASP.NET重寫URL一樣,它也是基于正則的方式來匹配,具有LOG記錄,請(qǐng)求的條件判斷。還是進(jìn)入正題吧。
安裝
IIRF安裝需要我們手動(dòng)操作來完成。不過。也是很方便了。
1 將IsapiRewrite4.dll, IsapiRewrite4.ini復(fù)制到c:\windows\system32\inetsrv(你也可以復(fù)制到其它適當(dāng)?shù)奈募A下面)。
IsapiRewrite4.ini是IIRF配置文件,每次該文件更改之后,IIRF會(huì)自動(dòng)重新加載該文件,無需重啟IIS來重新加載配置,如果您修改后INI文件后格式不正確,IIRF將會(huì)自動(dòng)獲取最后正確加載的配置文件。
2 打開IIS管理器,選擇“默認(rèn)網(wǎng)站”,右擊“屬性”,選擇“ISAPI篩選器”,點(diǎn)擊“添加”,輸入篩選器名稱:Ionic Rewriter,可執(zhí)行文件選擇上面復(fù)制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件,點(diǎn)“確定”。
3重啟IISADMIN service服務(wù)。(在計(jì)算機(jī)管理----windows服務(wù)里面)
4 完成。
日志
IIRF能夠?qū)NI配置文件加載,用戶的URL請(qǐng)求記錄都會(huì)保存到指定的日志文件里。因?yàn)樗哂泻艽蟮男阅荛_銷,因此建議將它日志的記錄等級(jí)設(shè)為0,只有
為了方便調(diào)試的時(shí)候時(shí)候,可以設(shè)置為5,
RewriteLog 保存的日志路徑,如 c:\temp\iirfLog.out
RewriteLogLevel {0,1,2,3,4,5} 日志的等級(jí),默認(rèn)值為0
0 –不會(huì)記錄日志
1- 少許的日志
2- 比較多的日志
3- 比較詳細(xì)的日志
4- 詳細(xì)的日志(4),并會(huì)跟蹤server variable和替換的字符串。
5- 詳細(xì)的日志(5),包括日志文件更改的事件,建議方便調(diào)試的時(shí)候使用
正則
正則的語法跟.NET一樣,只不過是格式不一樣而已。所以我也不在詳細(xì)介紹。具體有關(guān)正則的說明大家可以用GOOGLE搜索。
格式:
RewriteRule <url-pattern> <replacement-string> [<modifiers>]
url-pattern:匹配的正則表達(dá)式(必需)
replacement-string:要替換的字符串(必需)
modifiers:有關(guān)對(duì)RewriteRule的操作標(biāo)記??蛇x選項(xiàng)。在下面我會(huì)說明
默認(rèn)下IIRF的url-pattern,replacement-string正則的前面已經(jīng)帶了主機(jī)頭的。
為了方便描述,直接看幾個(gè)示例(以下示例基本全部來源IIRF文檔)
RewriteRule ^/original/(.*).php /modified/$1.aspx
源:http://xxx/original/index.php
目標(biāo):http://xxx/modified/index.aspx
RewriteRule ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG) /chiesa/pics.aspx?d=$1&p=$2.$3
源:http://xxx/dinoch/album/30/1.jpg
目標(biāo):http://xxx/chiesa/pics.aspx?d=30&p=1.jpg
比較簡單,主要還在于modifiers的功能。下面列舉了它的所有值,允許組合(如[R,L])。
R = Redirect(URL跳轉(zhuǎn)到<replacement-string>地址)
NF = Not found(返回404錯(cuò)誤給用戶,但該文件并未移除,還是保留在網(wǎng)站中)
L = Last test if match(如果已經(jīng)匹配,將不在繼續(xù)匹配下去)
F = Forbidden(跟NF標(biāo)志相似,)
I = Do case-insensitive matching
U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服務(wù)器變量中。)
[R] or [R=code]
就像跟我們?cè)贏SP.NET使用的Redirect方法一樣,重新改變?yōu)g覽器的方向,跳轉(zhuǎn)到新的指定的URL中。
[R=code]允許我們指定特定的HTTP狀態(tài)返回碼。只能介于301到399。如果超出這個(gè)范圍。默認(rèn)會(huì)是使用302狀態(tài)。
RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]
源:http://xxx/goto.aspx?r=http://www.google.com/
目標(biāo):http://www.google.com
[L]
上面已經(jīng)簡單介紹過。不在說明
[NF]
上面已經(jīng)簡單介紹過。它還可以跟RewriteCond一起配合,來實(shí)現(xiàn)自定義的404錯(cuò)誤請(qǐng)求。
特別要注意,你所要匹配的文件必須存在,替換的字符串不允許是存在文件名
RewriteRule ^/1008.aspx$ /1.aspx [NF]
1008.aspx文件需要存在,1.aspx不存在,否則無法正常達(dá)到我們的結(jié)果。
(很奇怪,我不知道是不是我搞錯(cuò)了。但我最終測試的結(jié)果確實(shí)是這樣,文檔也沒詳細(xì)說明過,有知道的朋友可以告訴我一下原因)
[F]
不在說明。
[I]
模糊匹配
[U]
保存原始的url到HTTP_X_REWRITE_URL服務(wù)器變量中。
在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]獲取原始值。
您可能感興趣的文章:
- Nginx服務(wù)器下使用rewrite重寫url以實(shí)現(xiàn)偽靜態(tài)的示例
- AspNetPager分頁控件UrlRewritePattern參數(shù)設(shè)置的重寫代碼
- iis7配置zend framework的地址重寫規(guī)則[url_rewrite]
- asp.net用url重寫URLReWriter實(shí)現(xiàn)任意二級(jí)域名 新
- asp.net用url重寫URLReWriter實(shí)現(xiàn)任意二級(jí)域名
- asp.net下用url重寫URLReWriter實(shí)現(xiàn)任意二級(jí)域名的方法
- 用ISAPI_Rewrite讓IIS也支持如Apache下.htaccess的URL重寫
- IIS下配置頁面重寫(配合插件url-rewrite2去除頁面后綴名)的實(shí)現(xiàn)方法
相關(guān)文章
win7下Apache2.2+Tomcat7.0整合配置詳解
這篇文章主要介紹了win7下Apache2.2+Tomcat7.0整合配置詳解,需要的朋友可以參考下2016-10-10win2003+IIS服務(wù)器下運(yùn)行ASP+ACCESS非常慢的解決方法
win2003+IIS上運(yùn)行ASP+ACCESS,非常緩慢,只要運(yùn)行=now()都非常慢,同樣的問題,有很多朋友遇到,下面與大家分享下正確的解決方法2014-06-06windows下安裝php5.2.*,php5.3.*,php5.4.*版本的memcache擴(kuò)展
這篇文章主要介紹了windows下安裝php5.2.*,php5.3.*,php5.4.*版本的memcache擴(kuò)展,需要的朋友可以參考下2015-10-10Windows Server 2003 系統(tǒng)安全配置方法
對(duì)于win2003服務(wù)器的安全配置方法,腳本之家之前發(fā)布了很多類似的文章,但并不完整,所以我們以后會(huì)整理下放到論壇里面,大家一起來交流。2009-10-10