當博客從華夏名網轉移到阿里雲之后,發現了不少問題,其中一個就是wordpress中文標簽無法訪問,出現404錯誤頁。

原因:在Windows主機的IIS服務器下WordPress不支持中文編碼法訪問,由於原來在華夏名網的服務器是linux的,所以沒有出現這種問題

解決方法:如果要想正常打開中文標簽,就需要讓WordPress能支持中文的編碼,也就是UTF-8和GBK編碼。

下面分享下我的解決過程;

 
  • 方法一:這也是百度最多的解決辦法之一(但是對我沒有作用,我根本找不到這兩句代碼)
打開wp-include中的class-wo.php文件,找到第1577行和第158行代碼進行修改。
第153行原代碼: $pathinfo = $_SERVER['PATH_INFO']; 替換為: $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
第158行原代碼: $req_uri = $_SERVER['REQUEST_URI']; 替換為: $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
修改好了之后,保存,然后將保存后的classes.php文件上傳到服務器並覆蓋原文件即可。
 
 
首先打開Wordpress站點下wp-includes目錄里的class-wp.php文件。操作之前復制備份一個是好的習慣。
搜索$_SERVER['REQUEST_URI']或直接定位157行。用“//”注釋掉

//list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );注釋掉這一行,添加下面兩行代碼
$Temp_REQUEST_URI= mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
list( $req_uri ) = explode( '?', $Temp_REQUEST_URI );
搜索$_SERVER['PATH_INFO']或直接定位到153行。用“//”注釋掉此行:

//$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';注釋掉這一行,添加下面兩行代碼
$Temp_PATH_INFO = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
$pathinfo = isset( $Temp_PATH_INFO ) ? $Temp_PATH_INFO : '';
  • 方法三:最后我用了一個插件解決了我的問題(是我人品太差么?)
 
插件名稱:Chinese Tag Names
插件作者:Coconut
插件頁面:http://nutsland.cn/blog/archives/177.html
當前版本:1.1
適用於Wordpress版本:2.0.2+
下載地址:http://wordpress.org/extend/plugins/chinese-tag-names/
插件說明
在Wordpress中設定了固定鏈接之后,有時(多見於Win主機)會出現中文標簽(Tag)的固定鏈接不能訪問的問題。
即 http://example.com/tag/中文 不能訪問,而 http://example.com/?tag=中文 可以訪問。
可以通過修改 class-wp.php 的方式來解決,但是每次Wordpress升級都要重新修改一次,比較麻煩。
本插件提供了便捷的解決方法。
現在支持所有包含中文的固定鏈接了,包括標簽、分類、作者存檔頁面、文章名等,例如:
http://example.com/tag/中文標簽
http://example.com/category/中文分類
http://example.com/archives/中文文章名
http://example.com/archives/author/中文作者名
http://example.com/中文頁面名
 
最后總結,不管用那種方法,只要能解決自己的問題就好,不必糾結過程,重在目的。我承認是我人品差了。
也希望大家能早日找到合適自己的解決方法

 

 

引用源文:猛戳這里