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 主機。