Ionic’s Isapi Rewrite Filter(IIRF)配置詳解

Ionic’s Isapi Rewrite Filter(IIRF)配置詳解

對於ISAPI Rewrite我想大家再熟悉不過了,它的僞靜態URL重寫功能已經被廣大服務器所應用,但是ISAPI Rewrite不是免費的,那麼有沒有一款軟件功能與ISAPI Rewrite相同,但又是免費的呢,而今答案是肯定的,Ionic’s Isapi Rewrite Filter 就是一款就可以實現ISAPI Rewrite相同的功能並且又是免費的,簡稱:IIRF。下面就對此做初步介紹。

Ionic’s Isapi Rewrite Filter 官方網站:http://iirf.codeplex.com
下載地址:http://iirf.codeplex.com/releases/view/14394
官方使用在線幫助手冊:http://cheeso.members.winisp.net/Iirf20Help/frames.htm

IIRF文件下載
將下載下來的文件解壓,只要找到bin目錄下的iirf.dll文件即可,其他文件都是沒有太大用處的,找到這個文件後將其複製到一個合適的目錄,我的目的就是多個網站都用這一個dll,所以我將它放置在一個自己整理的服務應用文件夾內;確保該文件夾IIS_WPG或者IUSR_XXX之類的賬號擁有權限訪問;

安裝配置(IIS7)
以下以IIS7.5爲例:
1、打開IIS,找到ISAPI篩選器,如圖:

添加iirf.dll,如圖:

2、然後打開處理程序映射,如圖,這一步可以省略:

添加腳本映射,如圖:

3、最後,設置iirf.ini和iirf.dll權限,如圖,如果iirf.dll所在分區爲FAT32格式,這一步可以省略:
注意:需要添加IIS_IUSRS和NETWORK SERVICE兩個用戶的讀寫權限。

4、查看設置狀態:
--在IIRF.ini文件中輸入以下內容--
#開啓設置狀態
StatusUrl iirfStatus
StatusInquiry ON
#設置日誌
RewriteLog D:/inetpub/IonicIsapiRewriter/iirfLog.out
RewriteLogLevel 5
#開啓RewriteEngine
RewriteFilterPriority HIGH
NotifyLog ON
RewriteEngine ON
然後在瀏覽器窗口中輸入網址+iirfstatus即可查看設置狀態
http://localhost:81/iirfstatus (本人是在本地測試的)

關於iirf.ini規則的編寫
規則文件格式基本照搬ISAPI Rewrite,要作修改,如:
RewriteRule [源URL正則條件] [目的URL]
ISAPI Rewrite與IIRF的區別就在[目的URL],ISAPI Rewrite的要轉義,而IIRF不用轉義。
如果有現成的ISAPI Rewrite的規則可以直接複製過來,將[目的URL]中的反斜槓(/)一個個刪除就可以用在IIRF中用了。
值得一提的是,INI配置文件是動態加載的,我們在配置文件的時候不需要重新啓動IIS就可以看到配置文件的結果;
好了,由於篇幅所限,就到此吧,如果有什麼疑問可以一起交流。
此內容引自大愚網技術世界,原文地址:http://www.dayunet.com/Archiver/view.asp?id=484

全局配置(iirfglobal.ini)
如果我們想要作用在所有加載了這個dll的網站的配置,我們可以在dll文件夾創建一個iirfglobal.ini文件,這個文件可以使所有加載了同文件夾內的DLL的所有網站使用這個相同的配置,單個配置就需要在每個網站的根目錄創建一個文件名iirf.ini的文件,並在其中編寫規則即可;

IIRF的Log日誌設置
RewriteLog c:/temp/iirfLog.outRewriteLogLevel 0
在我們調試規則的時候,我們可能需要看一下調試的內容Log一邊糾正規則:
路徑設置,確保文件夾的存在,否則會生成錯誤系統Log,但不影響IIRF的運行日誌的等級,默認值爲0
0 – 不會記錄日誌 1 – 少許的日誌 2 – 比較多的日誌 3 – 比較詳細的日誌 4 – 詳細的日誌,並會跟蹤server variable和替換的字符串。
5 – 詳細的日誌,包括日誌文件更改的事件,建議方便調試的時候使用。

規則格式
RewriteRule url-pattern replacement-string [modifiers]
url-pattern: 匹配的正則表達式(必需)

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

modifiers: 有關對RewriteRule的操作標記,可選選項 modifiers的功能。

下面列舉了它的所有值,允許組合(如[R,L]):

R = Redirect(URL跳轉到<replacement-string>地址)

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

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

F = Forbidden(跟NF標誌相似)

I = Do case-insensitive matching(不區分大小寫)

U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服務器變量中)


IIS多站點僞靜態實現工具Ionic’s Isapi Rewrite Filter(IIRF)——ISAPI Rewrite FULL的替代方案

IIS中增加URL Rewrite功能,最多人選用的是名爲“ISAPI Rewrite”的軟件,網上下載的破解版,其實破解不完善,最終會不能用。

再次查找,找到了Ionic’s Isapi Rewrite Filter,完全開源,完全免費,也完全沒有中文使用手冊。

不過,IIRF可以完美的支持IIS下多站點的僞靜態,可以定義一個所有站點共用的全局規則、以及對每個站點分別定義規則。其規則與apache下的規則基本上完全一致,當然與ISAPI Rewrite也高度兼容,完全可以替代“ISAPI Rewrite”。

首先到官方網站http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx下載最新軟 件包,注意要下載的是IonicIsapiRewriter-2.0-Release-bin.zip,版本號可能會變化。以下安裝僅針對Windows2003+IIS6.0的服務器環境。

一、安裝IIRF

1、複製IIRF的DLL(IIRF.dll)到相應的文件夾,如D:/Rewrite,或者,它可以在一個完全不同的目錄樹。

2、如果您創建一個服務器全局範圍的設置文件(iirfglobal.ini),你必須把它與(iirf.dll)文件在同一目錄中。 該URL Rewrite篩選器將尋找其在該文件中的全局設置文件。 如果是多個站點,則在站點更目錄下創建(iirf.dll)文件。

3、對(iirf.dll)所在目錄賦予IIS_WPG用戶組“讀取”、“讀取與運行”、“寫入”權限。

4、 打開Internet信息服務管理器。右鍵點擊IIS管理器左欄“網站”->“屬性”,彈出“網站屬性”選項卡,選擇“ISAPI篩選器”,如下圖添加IIRF。

5、重啓IIS

6、右鍵點擊IIS管理器左欄“網站” ->“屬性”,彈出“網站屬性”選項卡,選擇“ISAPI篩選器”,查看“IIRF”加載是否成功。若是綠色向上箭頭,則表示加載成功。

二、規則文件格式基本照搬ISAPI Rewrite,要作修改

RewriteRule [源URL正則條件] [目的URL]
ISAPI Rewrite與IIRF的區別就在[目的URL],ISAPI Rewrite的要轉義,而IIRF不用轉義。
如果網上有現成的ISAPI Rewrite的規則可以直接複製過來,將[目的URL]中的反斜槓()一個個刪除就可以用在IIRF中用了。
知道這個之後,你就可以隨便在網上與人交流,按ISAPI Rewrite交流,最後把轉義符()刪掉就行了。

三、日誌設置

在IIRF中日誌值可以設置爲0-5,在規則文件的開頭部分有兩行設置日誌類型
RewriteLog C:RewritesupesiteiirfLog.out (注意要寫清楚路徑,各站點不同)
RewriteLogLevel 0 (0爲不記類,3爲一般測試,5爲處理故障)
日誌的代價高昂,同時不會自動刪除文件,日誌類型一定要設成0,除非用於檢查才能修改爲其他值,檢查完後一定要改爲0,否則日誌文件把硬盤佔滿就麻煩了。
如果日誌不爲0,篩選器起用後,對應文件夾會產生類似以下的文件,是文本格式的,可以用記事本查看。
iirfLog.out.12345.log

四、查看配置

在IIRF.ini文件中輸入以下配置參數,則可通過瀏覽器方便查看目前IIRF配置
StatusUrl iirfStatus
StatusInquiry ON
在瀏覽器中輸入http://localhost/iirfstatus,即可查看。

五、規則文件可隨時修改,隨時生效!

六、附上WordPress的IIRF規則

先到WordPress後臺設置固定連接爲:/post/%post_id%.html
然後在WordPress所在網站的根目錄創建(iirf.ini)文件,並在文件中加入以下規則:

RewriteLogLevel 0

RewriteLog E:/flyingbluelogfilesIIRFLOGlog

StatusUrl iirfStatus

StatusInquiry ON

RewriteRule /index.html$ /index.php [L]

# # from accessing through HTTP

# # WordPress rewrite rules

# # Below is for permalink like /post/%post_id%.html

# # Provided By Sideblue

# # URL:http://ivup.cn

RewriteCond %{REQUEST_FILENAME} ^wp-content.*

RewriteCond %{REQUEST_FILENAME} ^wp-admin.*

RewriteCond %{REQUEST_FILENAME} ^wp-include.*

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule /post/tag/(.*) /index.php?tag=$1

RewriteRule /tag/(.*) /index.php?tag=$1

RewriteRule /(contact|about-copyright|favor|archives|tags|sitemap) /index.php?pagename=$1

RewriteRule /post/category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php?category_name=$1&feed=$2

RewriteRule /post/category/?(.*) /index.php?category_name=$1

RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php?author_name=$1&feed=$2

RewriteRule /author/?(.*) /index.php?author_name=$1

RewriteRule /rss.xml /wp-feed.php?feed=rss2

RewriteRule /feed/?$ /wp-feed.php?feed=rss2

RewriteRule /comments/feed/?$ /wp-feed.php?feed=comments-rss2

# RewriteRule /([0-9]+)/?([0-9]+)?/?$ /index.php?p=$1&page=$2

# RewriteRule /post/([0-9]+)/?([0-9]+)?/?$ /index.php?p=$1&page=$2

RewriteRule /post/([0-9]+).html /index.php?p=$1

RewriteRule /page/(.*)/?s=(.*) /index.php?s=$2&paged=$1

RewriteRule /page/(.*) /index.php?paged=$1

RewriteRule /post/date/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index.php?year=$1&monthnum=$2&day=$3&name=$4&page=$5

RewriteRule /post/date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3&page=$4

RewriteRule /post/date/([0-9]{4})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&page=$3

RewriteRule /post/([0-9]+).html/(feed|rdf|rss|rss2|atom) /index.php?feed=rss2&p=$1

RewriteRule /post/([0-9]+).html/trackback /wp-trackback.php?p=$1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章