前幾天由于各種原因,韋文成博客所在服務(wù)器系統(tǒng)從Linux換回到了Windows 2003,博客也因此幾天沒能正常訪問。
韋文成博客所使用的是Wordpress系統(tǒng),在Nginx下進(jìn)行偽靜態(tài)是相當(dāng)容易十分簡單的事情,可是使用了IIS6就不是那么回事了,網(wǎng)上找了些IIS下Wordpress進(jìn)行偽靜態(tài)的方法,但大都不理想,比如利用404,利用ISAPI_ReWrite進(jìn)行偽靜態(tài),總會(huì)有這樣那樣的問題。
無意中發(fā)現(xiàn)可以利用WordPress URL Rewrite完美解決遇到的問題。
Windows2003 IIS6下配置WordPress偽靜態(tài)方法:
1.下載WordPress URL Rewrite組件
下載地址:http://www.binaryfortress.com/wordpress-url-rewrite
WordPress URL Rewrite主要功能與特色:完全無需人工干預(yù),全自動(dòng)重寫URL,只需要在后臺(tái)設(shè)置好固定鏈接(Permalinks)形式,就能直接使用,就像linux下用htaccess一樣。可以使用在一級(jí)目錄和子目錄,也可以排除不需要重寫的目錄。這個(gè)非常方便,對(duì)于某些目錄不需要URL重寫的就將其排除,不會(huì)造成無法訪問。因?yàn)槿詣?dòng),所以免去了在寫重寫規(guī)則時(shí)候遇到的規(guī)則重復(fù)造成部分目錄和文件無法實(shí)現(xiàn)的情況。
2.安裝WordPress URL Rewrite
把下載的壓縮包解壓到任何地方,只要保證WordPressURLRewrite.ini和WordPressURLRewrite32.dll(32位版本,64位版本對(duì)應(yīng)為64.dll)在同一文件夾下就可以了。
然后打開WordPressURLRewrite.ini設(shè)置你的博客目錄,以及需要排除的目錄,Readme.txt里有詳細(xì)說明,這里就不細(xì)說了。
接下來,在IIS中選擇相應(yīng)的站點(diǎn),在ISAPI篩選器中加載WordPressURLRewrite32.dll就可以了,加載完重啟IIS或者停止網(wǎng)站再啟動(dòng)即可。

注意:要給dll所在的目錄加上IIS_WPG組的寫入權(quán)限,否則無法加載對(duì)應(yīng)dll文件。
如果箭頭紅色并且向下,請(qǐng)嘗試檢查組件文件夾的權(quán)限。
到此配置已經(jīng)完全OK了,因?yàn)轫f文成博客的文章、欄目、tag別名均是用的英文,但是如果你的博客路徑存在中文名,就得往下看了(以下方法為轉(zhuǎn)載,未親自測試)。
存在并需要解決的問題:
(1)中文的tag無法訪問
解決辦法:需要使用ISAPI_Rewrite來寫一條規(guī)則:
RewriteRule /tag/(.*) /index.php?tag=$1
(2)含有中文的網(wǎng)址不能訪問
1.安裝ISAPI_Rewrite
網(wǎng)站根目錄下新建立一個(gè)httpd.ini文件,用記事本或是EditPlus打開,規(guī)則寫在httpd.ini里,如下:
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
RewriteRule /tag/(.*)/ /index.php?tag=$1
現(xiàn)在中文tag是能訪問了,但是還是存在問題。
存在的問題:
(1) tag頁面的文章超過1頁,翻頁時(shí)都不能訪問
解決辦法:修改這條規(guī)則為:
RewriteRule /tag/[^/]+)/([^/]+)/?([0-9]+)?/ /index.php?tag=$1&paged=$3 [L]
但是修改之后中文tag又不能訪問了,別擔(dān)心,接著看下一步。
2.修改wp-include中的classes.php
繼續(xù)修改第1步中的問題,因?yàn)樾薷腞ewrite規(guī)則之后中文tag還是不能訪問,含有中文的網(wǎng)址也不能訪問。最好使用專門的PHP編輯器工具,如EditPlus。
原代碼:
$pathinfo = $_SERVER['PATH_INFO'];
替換為:
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
原代碼:
$req_uri = $_SERVER['REQUEST_URI'];
替換為:
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
修改后保存,然后將保存好的classes.php文件上傳并覆蓋原文件即可,注意文件保存格式。
注:在本文復(fù)制代碼可能會(huì)出現(xiàn)中文標(biāo)點(diǎn)符號(hào),請(qǐng)統(tǒng)一改成英文符號(hào),以免出錯(cuò)。
本文首發(fā)韋文成博客,原文地址:http://www.weiwencheng.com/wordpress/win2003-iis6-wordpress-rewrite/