url重寫(xiě)IIRF(Ionic's Isapi Rewrite Filter)手冊(cè)第2/2頁(yè)
更新時(shí)間:2008年07月29日 10:18:00 作者:
IIRF與ISAPI_Rewrite的規(guī)劃區(qū)別只在于IIRF不需要使用轉(zhuǎn)義字符\,而ISAPI_Rewrite則需要使用轉(zhuǎn)義字符\.
RewriteCond
RewriteCond <test-string> <pattern> [<modifier flag[,...]>]
類似于條件判斷,并且允許多個(gè)條件,OR,AND。只有當(dāng)RewriteCond的Server Variable 匹配所指定的正則表達(dá),RewriteRule才會(huì)執(zhí)行。比如:
RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$
RewriteRule ^/(.*).aspx$ /$1.aspx
如果我們?cè)L問(wèn)網(wǎng)站的地址的IP來(lái)源于127.0.0.1,那么,允許 RewriteRule ^/(.*).aspx$ /$1.aspx
RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$ [OR]
RewriteCond %{REMOTE_ADDR} ^(192.168.0.10)$
RewriteRule ^/(.*).aspx$ /$1.aspx
添加了OR來(lái)多個(gè)條件判斷
RewriteCond %{REMOTE_ADDR} ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$
RewriteRule ^/(?!redirected.htm)(.*)$ /redirected.htm
Modifier flags有二個(gè)值
I=模糊匹配
OR=邏輯判斷
從IIRF的RewriteCond的功能上來(lái)說(shuō),確實(shí)很靈活,不知道跟IIS7的重寫(xiě)怎么樣,嘻嘻。還沒(méi)瞧見(jiàn)過(guò)呢*^_&。另外。RewriteCond的[Patterns]可以帶下面幾個(gè)參數(shù)
-d
Treats the TestString as a pathname and tests if it exists,
and is a directory.
TestString是一個(gè)路徑名稱,并且存在這個(gè)路徑
-f
Treats the TestString as a pathname and tests if it exists and
is a regular file.
TestString是一個(gè)路徑名稱,并且是一個(gè)存在的文件
-s
Treats the TestString as a pathname and tests if it exists and
is a regular file with size greater than zero.
TestString 是一個(gè)路徑名稱,并且存在文件超過(guò)0字節(jié)
如文檔所使用的例子
(1)RewriteCond %{HTTP_URL} (/|\.htm|\.php|\.html|/[^.]*)$ [I] )
(2)RewriteCond %{REQUEST_FILENAME} !-f
(3)RewriteCond %{REQUEST_FILENAME} !-d
(4)RewriteRule ^.*$ /index.aspx [U,L]
(1)如果URL是以htm,php,html(模糊匹配),
(2)URL不是存在文件
(3)URL不是請(qǐng)求的路徑
(4)將所有請(qǐng)求跳轉(zhuǎn)到index.aspx,保存原始的URL,之后不在對(duì)此進(jìn)行匹配
在如
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
RewriteRule ^/$ /homepage.max.html [L]
IIRF其它配置屬性
IterationLimit {integer}從指定的integer后開(kāi)始匹配RewriteRule組。如果超出RewriteRule個(gè)數(shù),默認(rèn)將會(huì)從第8個(gè)開(kāi)始。
MaxMatchCount {integer} RewriteRule組的總個(gè)數(shù)。
RewriteLog <filename stub> 日志路徑
RewriteLogLevel {0,1,2,3,4,5} 日志的等級(jí)
一個(gè)常見(jiàn)問(wèn)題
在剛安裝IIRF之后就測(cè)試一下ASP.NET下面的URL,發(fā)現(xiàn)還是跟以前ASP.NET重寫(xiě)URL有一樣的問(wèn)題:無(wú)法改寫(xiě)Form下面的action的路徑,而我們這時(shí)使用Request.RawUrl獲取原始的URL是為空的。也許你開(kāi)始注意到了我上面寫(xiě)過(guò)的RewriteRule的modifiers選項(xiàng)[U]。我們可以通過(guò)將原始的URL保存到服務(wù)器變量中。然后通過(guò)Request.ServerVariables[name]來(lái)獲取。然后重寫(xiě)action的值就可以了。
Quote:
1 Public Class FormFixerHtmlTextWriterClass FormFixerHtmlTextWriter
2 Inherits System.Web.UI.HtmlTextWriter
3 Private _url As String
4 Public Sub New()Sub New(ByVal writer As TextWriter)
5 MyBase.New(writer)
6 _url = ForumContext.Current.Context.Request.ServerVariables("HTTP_X_REWRITE_URL")
7 End Sub
8 Public Overloads Overrides Sub WriteAttribute()Sub WriteAttribute(ByVal name As String, ByVal value As String, ByVal encode As Boolean)
9 If (Not _url Is Nothing And String.Compare(name, "action", True) = 0) Then
10 value = _url
11 End If
12 MyBase.WriteAttribute(name, value, encode)
13 End Sub
14 End Class
后記:
IIRF已經(jīng)分析的差不多了。從上面可以看出,功能確實(shí)很強(qiáng)大,而且配置也很靈活。發(fā)現(xiàn)自己也慢慢喜歡上它了。嘿嘿。重要的是。它是免費(fèi),開(kāi)源的。
您可能感興趣的文章:
- Nginx服務(wù)器下使用rewrite重寫(xiě)url以實(shí)現(xiàn)偽靜態(tài)的示例
- AspNetPager分頁(yè)控件UrlRewritePattern參數(shù)設(shè)置的重寫(xiě)代碼
- iis7配置zend framework的地址重寫(xiě)規(guī)則[url_rewrite]
- asp.net用url重寫(xiě)URLReWriter實(shí)現(xiàn)任意二級(jí)域名 新
- asp.net用url重寫(xiě)URLReWriter實(shí)現(xiàn)任意二級(jí)域名
- asp.net下用url重寫(xiě)URLReWriter實(shí)現(xiàn)任意二級(jí)域名的方法
- 用ISAPI_Rewrite讓IIS也支持如Apache下.htaccess的URL重寫(xiě)
- IIS下配置頁(yè)面重寫(xiě)(配合插件url-rewrite2去除頁(yè)面后綴名)的實(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()都非常慢,同樣的問(wèn)題,有很多朋友遇到,下面與大家分享下正確的解決方法2014-06-06Win7中IIS的ASP.NET環(huán)境配置簡(jiǎn)潔版
使用IIS運(yùn)行ASP.NET網(wǎng)站時(shí)一直報(bào)錯(cuò),想到自己可能配置的有問(wèn)題,于是上網(wǎng)找點(diǎn)資料看看,發(fā)現(xiàn)有個(gè)朋友對(duì)這個(gè)進(jìn)行了詳細(xì)的設(shè)置,非常好的介紹,我這里只是稍微總結(jié)下,好讓自己記得更清楚2013-09-09windows下安裝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ì)整理下放到論壇里面,大家一起來(lái)交流。2009-10-10