wordpress中文標(biāo)簽出現(xiàn)404錯(cuò)誤的解決辦法

2015年7月17日01:51:33 發(fā)表評(píng)論 7,841 ℃

最近剛把wordpress博客從linux服務(wù)器更換到windows服務(wù)器,無意間發(fā)現(xiàn)中文標(biāo)簽點(diǎn)擊報(bào)404錯(cuò)誤(后來百度只有iis環(huán)境才會(huì)有這個(gè)問題),找不到頁面,404錯(cuò)誤對(duì)seo優(yōu)化肯定是不又好的,所以趕緊想辦法處理。剛開始以為數(shù)據(jù)沒有轉(zhuǎn)移完全,又重新轉(zhuǎn)移了一次,但是故障依舊。沒有辦法,還是得需要解決?。∮谑前俣人阉鳌皐ordpress 中文標(biāo)簽404”,很多完美解決方案就唰唰的出來了。

首先找了一個(gè)方法馬上通過FTP測(cè)試,發(fā)現(xiàn)神奇的中文標(biāo)簽可以用了。

方法如下:

1.在網(wǎng)站的根目錄的wp-includes文件夾中找到“rewrite.php”這個(gè)文件。

2.備份一下“rewrite.php”,以防修改出錯(cuò)(改代碼之前我們都最好備份一下原代碼)。

3.打開“rewrite.php”文件中我們找到如下代碼:

function 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;}

將其中的

" if (empty($this->permalink_structure)) { ”

修改為“ 

if (!empty($this->permalink_structure)) { "

注意這個(gè)里面只加了一個(gè)英文“!”號(hào)。

wordpress中文標(biāo)簽出現(xiàn)404錯(cuò)誤的解決辦法雖然中文tag標(biāo)簽沒問題了,但是去訪問內(nèi)頁的時(shí)候,發(fā)現(xiàn)偽靜態(tài)失效了。沒辦法只能還原剛才修改的rewrite.php文件(記得修改任何文件之前都要備份),繼續(xù)搜索其他方法……

終于功夫不負(fù)有心人,又找到一個(gè)完美方案,測(cè)試中文404真的沒有報(bào)錯(cuò)了,方法如下:

1.打開wp-include文件夾,找到并打開編輯class-wp.php文件; 

2.查找代碼: 

$pathinfo = $_SERVER['PATH_INFO'];

把這句代碼替換成: 

$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");

3.查找代碼: 

$req_uri = $_SERVER['REQUEST_URI'];

把這句代碼替換成: 

$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

由于自己較懶惰,方案里面提供了修改好的class-wp.php文件,于是我直接下載上傳了,測(cè)試頁面?zhèn)戊o態(tài)也沒有問題,其他訪問也沒問題。

…………

第二天我去發(fā)布文章,上傳圖片的時(shí)候發(fā)現(xiàn)圖片上傳不了,以為是自己開的CDN加速的原因,于是乎用測(cè)試域名去測(cè)試發(fā)現(xiàn)還是無法上傳,以為是插件沖突了,全部停止還是不行,再次懷疑自己轉(zhuǎn)移數(shù)據(jù)沒有轉(zhuǎn)移完全,再去轉(zhuǎn)了一次,重新轉(zhuǎn)移測(cè)試圖片上傳成功,又去把之前修改的class-wp.php文件上傳以后,去測(cè)試圖片上傳失敗,還原此文件上傳成功。

終于找到原因了,原來上面的方法還是有瑕疵,再去仔細(xì)一看教程,原來只適用wordpress3.5以下的版本。

心灰意冷,再去找方法,終于找到一個(gè)適用于wordpress4.1版本的方法,如下:

1.首先找到wordpress的wp-includes目錄下-》class-wp.php文件,進(jìn)行如下修改就可以解決在Windows系統(tǒng)下部分中文標(biāo)簽無法打開的情況。

2.wp-includes/class-wp.php 153 行:

$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';

修改為:

$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? mb_convert_encoding($_SERVER['PATH_INFO'],'utf-8', 'GBK') : '';

3.wp-includes/class-wp.php 157 行:

list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );

修改為:

list( $req_uri ) = explode( '?', mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8','GBK') );

然后將class-wp.php文件保存并上傳覆蓋原文件。然后再全面測(cè)試偽靜態(tài)、中文標(biāo)題、圖片上傳都正常,此時(shí)終于完美解決。

在搜索的時(shí)候還找到了其他方法,未測(cè)試不知道是否可以解決,版本不同,方法不同,可以自行參考。

WordPress3.1之前版本,方法如下:

打開 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');

還有方法如下:

登錄wordpress后臺(tái),在文章標(biāo)簽里。給每一個(gè)含中文的Tags標(biāo)簽,加上一個(gè)標(biāo)簽別名?!皠e名” 是URL友好的另外一個(gè)名稱。它通常為小寫并且只能包含字母,數(shù)字和連字符。

對(duì)于上百個(gè)以上中文Tags標(biāo)簽的博客,此種方法工作量巨大。

還有說是ISAPI_Rewrite偽靜態(tài)的規(guī)則沒有寫好才導(dǎo)致找不到網(wǎng)頁文件的。其實(shí)就是更改一下規(guī)則就可以了:之前的tag偽靜態(tài)的規(guī)則

RewriteRule /tag/(.*)$ /index\.php\?tag=$1

更改后的規(guī)則

RewriteRule /tag/(.*)/$ /index\.php\?tag=$1

經(jīng)成都SEO博主測(cè)試無效果。

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: