WordPress 作為一種主流的部落格系統,得到很多站長的青睞。事實上,WordPress 也非常利於 seo,今天就來說說 WordPress 中的固定連結設定以及最佳化。

固定連結一般有 5 種形式:預設的?p=id 形式,日期+名稱形式,數字形式,還有就是自定義結構。大家可以發現大多數的 WordPress 網站都是使用的最後一種自定義結構形式,因為這樣的形式有利於搜尋引擎最佳化。那麼,自定義結構又應該怎麼設定好呢?

一般的自定義結構主要有以下兩種:直接設定為/%postname%/或者是設定成/%postname%.html 。其中%postname% 就是文章的自定義網址,這個在寫文章的時候會自動生成以文章標題為網址的連結。當然了,中文站一般使用外掛來翻譯,或者是自己編輯成拼音的形式。個人推薦拼音的形式,可以把文章內容的主要關鍵詞用拼音寫出來,這樣更有利於排名。

以上說的兩種自定義結構都很好,那麼應該選擇哪種好呢?依筆者的一點淺見,選擇/%postname%/結構比較好。為什麼這麼說呢?選擇前者,事實上搜尋引擎就把你的文章當成了網站子目錄的首頁,而選擇後者就是當作根目錄下的一個 html 檔案。那麼,子目錄的首頁和根目錄的普通頁面哪個權重高呢?應該是二級目錄的首頁,因此筆者推薦使用前者,即如同/%postname%/這樣的結構。

固定連結設定好後,只要點選 「更新」 就可以了。如果是 linux 主機,WordPress 會自動生成.htaccess,相當於固定連結就這樣設定好了; 然而 windows 主機就要麻煩不少,需要站長自己撰寫 httod.ini,並上傳到根目錄。這裡提供一個範本。

[ISAPI_Rewrite]

RewriteRule /sitemap.xml /sitemap.xml [L]

RewriteRule /sitemap.html /sitemap.html [L]

RewriteRule /favicon.ico /favicon.ico [L]

RewriteRule /wap(.*) /wap$1 [L]

RewriteRule /content/uploads/(.*) /content/uploads/$1 [L]

RewriteRule /wp-(.*) /wp-$1 [L]

RewriteRule ^/$ /index.php [L]

RewriteRule /(.*) /index.php/$1 [L]

只要把以上程式碼貼上到文字檔案中,再另存為 httpd.ini 並上傳到根目錄就行了。需要注意的是,由於 win 主機在這方面的嚴重缺陷,以上程式碼也有個小漏洞,就是網站所有檔案都無法訪問。解決方法也很簡單,如果是根目錄的檔案,只要新增 RewriteRule /檔名 /檔名 [L] 就行了,而目錄除了範本中已經出現的以外,只要新增 RewriteRule /資料夾目錄/(.*) /資料夾目錄/$1 [L] 就可以了。至此,WordPress 的固定連結設定總算是完成了。

那麼,設定了自己的固定連結,預設的?p=id 形式的連結還能訪問嗎?答案是可以的。又要說道 linux 主機和 win 主機的優劣了。如果是 linux 主機,訪問?p=形式的網頁會自動 301 跳轉到別名的文章頁 (即你自己設定的連結),然而 win 主機則不會,由此就造成了每個文章頁面都可以用兩種不同的連結訪問。這樣對搜尋引擎是很不友好的,因此必須要讓短連結 301 跳轉到別名連結。那麼怎麼設定呢?只要在模板中找到 header.php,在頭部新增如下程式碼就可以了。

if($_GET['p']||$_GET['page_id']){

if($_GET['p'])$id=$_GET['p'];

if($_GET['page_id'])$id=$_GET['page_id'];

$post= get_post($id);

$name=$post->post_name;

header('HTTP/1.1 301 Moved Permanently');//發出 301 頭部

header('Location: '.bloginfo('url').'/'.$name.'/');

exit();

}else if($_GET['cat']){

$id=$_GET['cat'];

$cat=get_category($id);

$name=$cat->slug;

header('HTTP/1.1 301 Moved Permanently');

header('Location: '.bloginfo('url').'/cat/'.$name.'/');

exit();

}else if($_GET['tag']){

$name=$_GET['tag'];

header('HTTP/1.1 301 Moved Permanently');

header('Location: '.bloginfo('url').'/tag/'.$name.'/');

exit();

}?>

呵呵,這下總算是大功告成了,無論是 linux 主機還是 win 主機,都算是真正做好了固定連結。由此也可見,如果用 WordPress 系統的話,儘量使用 linux 主機。