文章目錄
要說Wordpress中的完美工作環境,當然要屬於Lamp平台,或是稍微遜色一點的Wamp平台;但是由於某此特殊原因,我們沒有選擇它們,而是選擇了Windows+iis+MySql+Php,我把它統稱為:Wimp平台。
這次我要說的就是如何在Wimp平台中實現Wordpress的完美URL結構!
例:http://www.phplamp.org/2008/06/wp-iis-isapi/ (本文的URL)
用過Wordpress的應該都知道,實現這樣的URL只需要在後台中:Settings->permalinks,然後設定成自己中意的URL就行了。但是前提是您的空間支援 rewrite || 您的虛擬機器主機支援 .htaccess。Lamp,Wamp中只要開啟載入mod_rewrite模組就行了。但是Wimp卻不是這麼簡單的,它如果想實現rewrite功能只能藉助於第三方的ISAPI組件。
如現在比較火的:http://www.helicontech.com/isapi_rewrite/ 這是一個國外的組織專門為IIS寫的ISAPI Rewrite組件,非常類似於Apache的mod_rewrite。有免費版與收費版!很多網友說實現WP在IIS中的rewrite功能只需要下載一個它的組件就OK了。我在本地測試了好一陣子,沒有成功,而且用它的比較麻煩,還要自己寫rewrite規則!(沒有成功可能是我沒寫正確規則,汗!)。最後我放棄了它……
下面說一下本部落格中(phplamp.org)用到的ISAPI組件吧:
wp-url-rewriting.dll :http://code.google.com/p/wp-url-rewriting-on-iis/downloads/list
這是位好心的牛人專門為工作於iiS中的WP寫的ISAPI rewrite組件,用它您根本就不用寫rewrite規則,您只需要將其載入到您的ISAPI中,然後進wp後台定義自己的permalinks即可。 假如你用的是虛擬機器主機的話,您可以聯絡您的空間商讓其為您添加上這個組件。從此您的WP也可以完美rewrite了。
注意:本文還沒有完呢!
當我們定義好permalinks後,可能您會發現,我們點擊中文標量的文章連結時說找不到網址。
例:http://www.phplamp.org/2008/06/php%e4%b8%ad%e7%9a%84%e6%96%87%e7%ab%a0/
這是因為:WP的編碼為utf-8,而這篇文章的URL中Slug(上連結紅色部分)編碼為gbk。然後WP取得文章Slug後,通過它來尋找文章就會找不到!因為編碼不同呀。
更改方法:
wp-include/classes.php中(44-50行)
PHP代碼
- if ( isset($_SERVER['PATH_INFO']) )
- $pathinfo = $_SERVER['PATH_INFO'];
- else
- $pathinfo = '';
- $pathinfo_array = explode("?", $pathinfo);
- $pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
- $req_uri = $_SERVER['REQUEST_URI'];
替換為下(轉換$_SERVER['PATH_INFO']和$_SERVER['REQUEST_URI']的編碼):
PHP代碼
- if ( isset($_SERVER['PATH_INFO']) )
- $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "utf-8", "GBK");
- else
- $pathinfo = '';
- $pathinfo_array = explode("?", $pathinfo);
- $pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
- $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "utf-8", "GBK");
這個操作的意思就是:將Slug的編碼由GBK轉換為utf-8(您也可以用iconv,或是其它的函數來代替mb_convert_encoding)。
《-結束-》