IIS主機上配置ISAPI_Rewrite3

寫在前面的長長的吐槽——

這幾天阿頭一拍腦門決定要把A站遷至B站,而B站原本是一個 wordpress 站點,於是就 order 小雪把原本根目錄下的 wordpress 站遷至新建的二級目錄下,把A站的所有內容放置在B站的根目錄,又因為捨不得原來B站已有的流量與PR等,所以又要小雪做301重定向至新網址(人心不足蛇吞象)。這兩個網站都不是小雪做的也不是小雪在養的,總之,order 嘛,你懂的。

然後小雪把比較麻煩的 wordpress站點遷移與301重定向先處理好,再把A站點上傳至B站空間根目錄下,打開首頁無法顯示,噢耶(^o^)/ 原來B站所在是 LINUX主機,而A站是 ASP站點,呵呵。果然是一拍腦門做的決定。當然,事前沒有看清楚系統不同的小雪也有責任在喇。總之報告給啊頭后,人家說,「是齁,那就把他們都遷至 WIN主機好了」。翻桌!!!摔!!!!!!小雪不得不在心裡 LOOP 默唸,人家有給你薪水的人家有給你薪水的人家有給你薪水的……

= 吐槽完畢,以下正文 =

主機操作系統類型Windows server 2003 Enterprise Edition Service Pack 2

IIS服務器版本是 V6.0

設置非常乾淨的一個主機,that means 小雪要自己配置PHP+MYSQL ,爲了實現偽靜態和301重定向還要安裝 Rewrite 組件,再次摔!!!

還算主機商有點良心,在硬盤里放了一些安裝包供參考選擇,比如 ISAPI_Rewrite3 的安裝包

ISAPI Rewrite 是國外開發的付費組件,它分Lite版本及Full版本, Full版本才能給每個虛擬主機用戶單獨配置Rewrite規則,我們需要的正式Full版本,而主機商提供的就是Full版本的破解版。雖然是全英的安裝過程,不過也不必感到恐懼,「NEXT」按鈕一直按下去就沒錯了。安裝好后,替換破解文件,修改 httd.conf ,重啟IIS就好了。

20140416135037

(安裝過程可以參考此文: http://www.dreamfy.com/notes/other/1282.html 。)

摸摸主機商的良心,原來還是有的。小雪右鍵「網站」 -「 屬性 」- 「ISAPI 篩選器」 ,發現已經列有 ISAPI_Rewrite3 了。

20140416164207

點擊 「ISAPI_Rewrite」 標籤,可以查看與修改 httpd.conf 文件。

20140416135450

在「Web 服務擴展」中也可以看到 ISAPI_Rewrite3 已被允許。

20140416135235

ISAPI_Rewrite3 组件是通过 .htaccess 文件来加载规则的。首先選擇具體某個網站,右鍵「屬性」,點擊「ISAPI 篩選器」,可以看到現在還是空白的列表。

20140416135813

點擊「添加」按鈕,輸入「篩選器名稱」與「可執行文件」地址。

20140416135832

可執行文件選擇 ISAPI_Rewrite.dll 所在路徑位置,按下「確定」按鈕。

20140416135928

不嫌麻煩地重啟IIS。

20140416140007

接著點擊 「ISAPI_Rewrite」 標籤,點擊「Edit」按鈕,添加規則,下圖系已經完成的截圖。

20140416143914

點擊 Edit 后就會彈出一個編輯器,上面一排按鈕的功能分別是「應用/確定」,「取消/放棄」,「regex正規表示式測試」,「註釋」,「取消註釋」、「hidden屬性標記」。

20140416143933

regex正規表示式測試是一個很有用的功能,只要你在 「Rule」 欄輸入規則,在 「Test string」 欄輸入測試字串,就可以驗證你的規則是否正確。也可以直接輸入 「Regexp」 欄與 「Format string」 欄來生成你的regex正規表示式。

20140416144058

需要注意的是,ISAPI_Rewrite3 所用的regex正規表示式規則跟我們平常使用的不同,具體可以參考安裝文件夾內的手冊 「ISAPI_Rewrite.chm」 ,也可以參考此文: http://www.pc6.com/infoview/Article_49936_all.html 。

另外, ISAPI_Rewrite 3 版本跟之前的版本的規則也不同,建議始終更新至最新版本使用。

 

最後,總之……

小雪是要將 domain.com/23435.html 這樣的URL設置301重定向至二級目錄下同地址 domain.com/wp/23435.html ,小雪設置的規則如下:

RewriteEngine on
RewriteRule ^[d]+.html /wp/$0 [R=301,L]