WordPress在Win-iis中的完美rewrite實現方法

來源:互聯網
上載者:User
文章目錄
  •  
 

要說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代碼
  1. if ( isset($_SERVER['PATH_INFO']) )   
  2.     $pathinfo = $_SERVER['PATH_INFO'];   
  3. else  
  4.     $pathinfo = '';   
  5.     $pathinfo_array = explode("?", $pathinfo);   
  6.     $pathinfo = str_replace("%", "%25", $pathinfo_array[0]);   
  7.     $req_uri = $_SERVER['REQUEST_URI'];  

替換為下(轉換$_SERVER['PATH_INFO']和$_SERVER['REQUEST_URI']的編碼):

PHP代碼
  1. if ( isset($_SERVER['PATH_INFO']) )   
  2.     $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "utf-8", "GBK");   
  3. else  
  4.     $pathinfo = '';   
  5.     $pathinfo_array = explode("?", $pathinfo);   
  6.     $pathinfo = str_replace("%", "%25", $pathinfo_array[0]);   
  7.     $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "utf-8", "GBK");  

這個操作的意思就是:將Slug的編碼由GBK轉換為utf-8(您也可以用iconv,或是其它的函數來代替mb_convert_encoding)。

《-結束-》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.