前幾天由于各種原因,韋文成博客所在服務(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),總會有這樣那樣的問題。
無意中發(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ù),全自動重寫URL,只需要在后臺設(shè)置好固定鏈接(Permalinks)形式,就能直接使用,就像linux下用htaccess一樣??梢允褂迷谝患壞夸浐妥幽夸洠部梢耘懦恍枰貙懙哪夸?。這個(gè)非常方便,對于某些目錄不需要URL重寫的就將其排除,不會造成無法訪問。因?yàn)槿詣?,所以免去了在寫重寫?guī)則時(shí)候遇到的規(guī)則重復(fù)造成部分目錄和文件無法實(shí)現(xiàn)的情況。
2.安裝WordPress URL Rewrite
把下載的壓縮包解壓到任何地方,只要保證WordPressURLRewrite.ini和WordPressURLRewrite32.dll(32位版本,64位版本對應(yīng)為64.dll)在同一文件夾下就可以了。
然后打開WordPressURLRewrite.ini設(shè)置你的博客目錄,以及需要排除的目錄,Readme.txt里有詳細(xì)說明,這里就不細(xì)說了。
接下來,在IIS中選擇相應(yīng)的站點(diǎn),在ISAPI篩選器中加載WordPressURLRewrite32.dll就可以了,加載完重啟IIS或者停止網(wǎng)站再啟動即可。
注意:要給dll所在的目錄加上IIS_WPG組的寫入權(quán)限,否則無法加載對應(yīng)dll文件。如果箭頭紅色并且向下,請嘗試檢查組件文件夾的權(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ù)制代碼可能會出現(xiàn)中文標(biāo)點(diǎn)符號,請統(tǒng)一改成英文符號,以免出錯(cuò)。