<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ionic's Isapi Rewrite FilterURL重寫過濾器

          聯(lián)合創(chuàng)作 · 2023-10-01 13:57

          IIRF(Ionic's Isapi Rewrite Filter)是一款開源的重寫URL過濾器,類似于Apache的URL重寫,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新編譯)開發(fā)。

          它可以運行在IIS5.0至IIS7.0,支持ASP,ASP.NET(ASPX),PHP等許多格式。相對比ASP.NET2.0自帶的URL重寫,具有更好的性能和許多我們所需要特性,重要的一點在于:它可以支持無擴展名的URL(例如:www.x2009.net/****,你無需在創(chuàng)建一個默認的default.aspx文件,IIRF自動會幫你解析),讓URL更加的方便我們記憶,也能進一步提高搜索的排名?IIRF能夠在aspnet_isapi提前捕獲我們所請求的URL進行處理,如果我們訪問www.x2009.net/a.aspx,需要獲取www.x2009.net/a.htm,步驟需要(iis-aspnet_isapi),通過IIRF,我們可以直接跳aspnet_isapi.dll,直接訪問a.htm,要知道,這種方式在ASP.NET是無法實現(xiàn)的。

          IIRF跟ASP.NET重寫URL一樣,它也是基于正則的方式來匹配,具有LOG記錄,請求的條件判斷。還是進入正題吧。

          安裝

          IIRF安裝需要我們手動操作來完成。不過。也是很方便了。

          1 將IsapiRewrite4.dll, IsapiRewrite4.ini復(fù)制到c:\windows\system32\inetsrv(你也可以復(fù)制到其它適當?shù)奈募A下面)。

          IsapiRewrite4.ini是IIRF配置文件,每次該文件更改之后,IIRF會自動重新加載該文件,無需重啟IIS來重新加載配置,如果您修改后INI文件后格式不正確,IIRF將會自動獲取最后正確加載的配置文件。

          2 打開IIS管理器,選擇“默認網(wǎng)站”,右擊“屬性”,選擇“ISAPI篩選器”,點擊“添加”,輸入篩選器名稱:Ionic Rewriter,可執(zhí)行文件選擇上面復(fù)制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件,點“確定”。

          3重啟IISADMIN service服務(wù)。(在計算機管理----windows服務(wù)里面)

          4 完成。

          日志IIRF能夠?qū)NI配置文件加載,用戶的URL請求記錄都會保存到指定的日志文件里。因為它具有很大的性能開銷,因此建議將它日志的記錄等級設(shè)為0,只有



          為了方便調(diào)試的時候時候,可以設(shè)置為5,

          RewriteLog 保存的日志路徑,如 c:\temp\iirfLog.out

          RewriteLogLevel {0,1,2,3,4,5} 日志的等級,默認值為0

          0 –不會記錄日志

          1- 少許的日志

          2- 比較多的日志

          3- 比較詳細的日志

          4- 詳細的日志(4),并會跟蹤server variable和替換的字符串。

          5- 詳細的日志(5),包括日志文件更改的事件,建議方便調(diào)試的時候使用

          正則

          正則的語法跟.NET一樣,只不過是格式不一樣而已。

          格式

          RewriteRule []

          url-pattern:匹配的正則表達式(必需)

          replacement-string:要替換的字符串(必需)

          modifiers:有關(guān)對RewriteRule的操作標記。可選選項。在下面我會說明

          默認下IIRF的url-pattern,replacement-string正則的前面已經(jīng)帶了主機頭的。

          為了方便描述,直接看幾個示例(以下示例基本全部來源IIRF文檔)

          RewriteRule ^/original/(.*).php /modified/$1.aspx

          源:http://www.x2009.net/original/index.php

          目標:http://www.x2009.net/modified/index.aspx

          RewriteRule ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG) /chiesa/pics.aspx?d=$1&p=$2.$3

          源:http://www.x2009.net/dinoch/album/30/1.jpg

          目標:http://www.x2009.net/chiesa/pics.aspx?d=30&p=1.jpg

          比較簡單,主要還在于modifiers的功能。下面列舉了它的所有值,允許組合(如[R,L])。

          R = Redirect(URL跳轉(zhuǎn)到地址)

          NF = Not found(返回404錯誤給用戶,但該文件并未移除,還是保留在網(wǎng)站中)

          L = Last test if match(如果已經(jīng)匹配,將不在繼續(xù)匹配下去)

          F = Forbidden(跟NF標志相似,)

          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]

          就像跟我們在ASP.NET使用的Redirect方法一樣,重新改變?yōu)g覽器的方向,跳轉(zhuǎn)到新的指定的URL中。

          [R=code]允許我們指定特定的HTTP狀態(tài)返回碼。只能介于301到399。如果超出這個范圍。默認會是使用302狀態(tài)。

          RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]

          源:http://www.x2009.net/goto.aspx?r=http://www.google.com/

          目標:http://www.google.com

          [L]

          上面已經(jīng)簡單介紹過。不在說明

          [NF]

          上面已經(jīng)簡單介紹過。它還可以跟RewriteCond一起配合,來實現(xiàn)自定義的404錯誤請求。

          特別要注意,你所要匹配的文件必須存在,替換的字符串不允許是存在文件名

          RewriteRule ^/1008.aspx$ /1.aspx [NF]

          1008.aspx文件需要存在,1.aspx不存在,否則無法正常達到我們的結(jié)果。

          (很奇怪,我不知道是不是我搞錯了。但我最終測試的結(jié)果確實是這樣,文檔也沒詳細說明過,有知道的朋友可以告訴我一下原因)

          [F]

          不在說明。

          [I]

          模糊匹配

          [U]

          保存原始的url到HTTP_X_REWRITE_URL服務(wù)器變量中。

          在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]獲取原始值。

          RewriteCond

          RewriteCond []

          類似于條件判斷,并且允許多個條件,OR,AND。只有當RewriteCond的Server Variable 匹配所指定的正則表達,RewriteRule才會執(zhí)行。比如:

          RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$

          RewriteRule ^/(.*).aspx$ /$1.aspx

          如果我們訪問網(wǎng)站的地址的IP來源于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來多個條件判斷

          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有二個值

          I=模糊匹配

          OR=邏輯判斷

          從IIRF的RewriteCond的功能上來說,確實很靈活,不知道跟IIS7的重寫怎么樣,嘻嘻。還沒瞧見過呢*^_&。另外。RewriteCond的[Patterns]可以帶下面幾個參數(shù)

          -d

          Treats the TestString as a pathname and tests if it exists,

          and is a directory.

          TestString是一個路徑名稱,并且存在這個路徑

          -f

          Treats the TestString as a pathname and tests if it exists and

          is a regular file.

          TestString是一個路徑名稱,并且是一個存在的文件

          -s

          Treats the TestString as a pathname and tests if it exists and

          is a regular file with size greater than zero.

          TestString 是一個路徑名稱,并且存在文件超過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不是請求的路徑

          (4)將所有請求跳轉(zhuǎn)到index.aspx,保存原始的URL,之后不在對此進行匹配

          在如

          RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*

          RewriteRule ^/$ /homepage.max.html [L]

          IIRF其它配置屬性

          IterationLimit {integer}從指定的integer后開始匹配RewriteRule組。如果超出RewriteRule個數(shù),默認將會從第8個開始。

          MaxMatchCount {integer} RewriteRule組的總個數(shù)。

          RewriteLog 日志路徑

          RewriteLogLevel {0,1,2,3,4,5} 日志的等級

          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天操天 | 女人18毛片久久久 | 精品无码一区二区三区的天堂 | 看一级黄片 | 免费看逼伊人电影 |