由於 IIS 本身沒有內建類似 Apache 的 mod_rewrite 功能,為了讓自己的 wordpress 能夠擁有簡短漂亮的靜態網址(Permalinks),連續幾天測試 wordpress 和 IIS 的 rewrite 設定,搞到快發瘋,昨天大致上初步完成,幾個比較重要的連結目前已經可以正常瀏覽、分頁,其它較細部的 links 就不知道 RewriteRules 有沒有正確了,有待慢慢測試驗證。
我是使用 Helicon Tech. 的 ISAPI_Rewrite 3.1 Lite,因為是免費的,所以功能有些許精簡,不過對一般人來說已經夠用了。網站上有建立詳細教學文件供使用者參考,或是安裝完 ISAPI_Rewrite 會在安裝資料夾下提供一個檔名為 ISAPI_Rewrite.chm 的 help 檔,二者內容相同。
網路會搜尋到很多 RewriteRules 的範例是 [ISAPI_Rewrite]
開頭的 httpd.ini,這是舊版的 ISAPI_Rewrite 設定,目前 ISAPI_Rewrite 3.1 新版本的設定檔是以 RewriteEngine on
開頭的 httpd.conf,與 Apache 一致,只要將網路上找到的設定檔複製到 ISAPI_Rewrite Manager 的 Config Editor,按下『Apply』之後,它會自動檢查語法正確性。
而昨天之所以一直搞不定 Permalinks 的原因在於無法換頁,不管是 blog 文章換頁、Categories 換頁、或是 Archives 換頁,只要遇到 nextpage 就挫賽(出現 404 或是找不到文章),幸好 wordpress 官網討論串:permalink nextpage doesn’t work 拯救了我,裡面有提到以 [_0-9a-z-]
來取代 .
,譬如:(.*) 改為→([_0-9a-z-]*)
,結果照作之後還真的解決了換頁問題,納悶…
-
相關連結:
- Using Permalinks
- 簡單 RewriteRules 語法教學 by refly
- RewriteRule (mod_rewrite) guide
- mod_rewrite tips, tricks, and forum:有很多值得參考的文章
- WordPress Rewrite 規則 For IIS by 甜螞蟻