WordPress中文tag標籤出現404解決方案
WordPress搭建的部落格或網站常出現一個問題就是中文tag連結不存在,google管理員工具提示抓取404錯誤,特別是Windows主機常出現中文標籤連結抓取錯誤,中文標籤不能正常顯示;或者中文標籤能夠正常顯示,但是點選連結後即出現404錯誤,給使用者帶來非常大的不便,極大降低了網站的友好性。
該怎樣解決這個問題呢?
- 第一種方法:
開啟 WP-include/classes.php(3.1之前版本)或WP-include/class-wp.php(3.1+之後版本,下文稱新版)找到第154行(新版為142行),把:
$pathinfo
= $_SERVER['PATH_INFO';
替換為:
$pathinfo
= mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'GBK');
找到第159行(新版為147行),把:
$req_uri
= $_SERVER['REQUEST_URI'];
替換為:
$req_uri
= mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'GBK');
經本人親測,本方法可用,新版本的語句與以上可能有出入,但是方法基本相同的,將其中的相應語句替換即可。
- 第二種方法:
1、在網站的根目錄的wp-includes資料夾中找到“rewrite.php”這個檔案;
2、備份一下“rewrite.php”,以防修改出錯(改程式碼之前我們都最好備份一下原始碼);
3、開啟“rewrite.php”檔案中我們找到如下程式碼:
function get_tag_permastruct(){if(isset($this->tag_structure)){return $this->tag_structure;}if(empty($this->permalink_structure)){//修改這句 $this->tag_structure ='';returnfalse;}if(empty($this->tag_base)) $this->tag_structure = $this->front .'tag/';else$this->tag_structure = $this->tag_base .'/'; $this->tag_structure .='%tag%';return $this->tag_structure;}
4、將其中的
" if (empty($this->permalink_structure)) { ”
修改為
“if(! empty($this->permalink_structure)){";
注意這個裡面只加了一個英文“!”號,經測試,使用的這個方法非常有效。PS.直接沒找到這個檔案內說的這段程式碼。。。
第三種方法:最後解決中文TAG 404錯誤的方法,其實說到底就是ISAPI_Rewrite偽靜態的規則沒有寫好才導致找不到網頁檔案的。其實就是更改一下規則就可以了:之前的tag偽靜態的規則
RewriteRule
/tag/(.*)$ /index\.php\?tag=$1
更改後的規則
RewriteRule
/tag/(.*)/$ /index\.php\?tag=$1
這個方法我沒有測試,所以不能保證是否可用,修改前請備份!
- 第三種方法:
如果以上兩種方法都不可行,再給大家推薦一種方法:給每個tag打上別名。
“別名” 是URL友好的另外一個名稱。它通常為小寫並且只能包含字母,數字和連字元。
但對於上百個以上中文Tags標籤的部落格,此種方法工作量巨大。慎用。
這種方法對英文tag可以正常連結但是中文tag出問題的網站管用,對英文tag連結404的網站沒用。