TypeCho轉WordPress之后,發現點擊中文tag出現404頁面,也就是點擊無效了。試了幾種修改鏈接樣式,都沒效果。也嘗試了各種網上找的3中方法:
第一種方法:打開 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”文件中我們找到如下代碼:
1function get_tag_permastruct() {if (isset($this->tag_structure)) {return $this->tag_structure;}if (empty($this->permalink_structure)) { //修改這句$this->tag_structure = '';return false;}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
WordPress中文標簽Tags分頁打不開解決辦法
問題描述:
設置了偽靜態以后,對於中文的支持就很容易出現亂碼,除了常見的utf-8更改格式以外。有一些插件仍然會出現bug。
這里出現的問題就是中文tag,分頁會出現404或者好似500錯誤。牽扯到的插件是wp-pagenavi。
解決方法:
解決wp-pagenavi插件中文tags分頁問題
方法一:修改wp-pagenav文件
1、備份你的wp-pagenav分頁插件,形成良好的備份習慣。這里只需要對wp-pagenavi.php文件操作,如果你懶干脆只備份此文件。
2、用FTP軟件,二進制方式下載wp-pagenavi.php文件到本地,使用Editplus或Dreamweaver打開文件。搜索下面代碼(大約170行):
1return "<a href='" . esc_url(get_pagenum_link($page)) . "' class='$class'>$text</a>";
3、在此句前加“#”,或用“/**/”把詞句包含,注釋掉此段代碼。另起一行,加入如下代碼:
1return "<a href='" . esc_url(mb_convert_encoding(get_pagenum_link($page), "UTF-8","GBK")) . "' class='$class'>$text</a>";
4、保存文件,並上傳到服務器,測試你的Tags分頁是否可用。我的Tags:網站優化,截止目前為止有10個。
方法二:給中文標簽寫上別名
登錄wordpress后台,在文章標簽里。給每一個含中文的Tags標簽,加上一個標簽別名。“別名” 是URL友好的另外一個名稱。它通常為小寫並且只能包含字母,數字和連字符。
對於上百個以上中文Tags標簽的博客,此種方法工作量巨大。我看了就頭疼,因此選用了第一種方法。
這里不想去改代碼直接給標簽加上非中問的別名就可以解決了,且可以有更好的URL形式