1. 程式人生 > >WordPress中文tag標籤出現404解決方案

WordPress中文tag標籤出現404解決方案

WordPress搭建的部落格或網站常出現一個問題就是中文tag連結不存在,google管理員工具提示抓取404錯誤,特別是Windows主機常出現中文標籤連結抓取錯誤,中文標籤不能正常顯示;或者中文標籤能夠正常顯示,但是點選連結後即出現404錯誤,給使用者帶來非常大的不便,極大降低了網站的友好性。

該怎樣解決這個問題呢?

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的網站沒用。