利用canonical屬性再次加強網頁權重

先來看一段引文:

谷歌、雅虎和live search 宣佈支持Link的一個新屬性Canonical,為網頁指定權威鏈(authoritative|canonical URL),以解決復制內容(duplicate content)問題。

復制內容或復制網頁是指相同或十分相近的內容卻有多個不同的URL,如打印頁、或者有sessionid的URL等。現在網站管理員可以在相同內容的網頁的頭部(head)上加一個link標簽,指定首選URL,以此聲明一個權威網頁做為復制網頁的標準版本,使鏈接和搜索結果都集中到這個首選的版本上。

<link rel=canonical href=authoritative | canonical URL/>

* href可以是絕對地址或相對地址;但不能指向不同的域名,否則會被忽略;允許指向不同的子域名;

*link rel=canonical屬性可以被傳遞,即A頁面聲明B為權威鏈接,B聲明C為權威網頁,則SE會認為C是A和B共同的首選權威版本。

*如果權威頁指向的是一個404頁,則SE仍會索引這個頁的內容,並試圖找到一個標準頁。

什麼時候適合使用cononical:在制作網站中仍需減少復制網頁或者使用301跳轉規范化網址,如果都不行再用link rel= canonical 這個標簽。在google的博客中還看到,如果指定的權威網頁沒有被索引,將可能被立即被索引,因此這個標簽,在其它任何方法都無法消除復制網頁時,指出權威網頁,將是最好的方法。

為瞭讓菜鳥們充分理解這個屬性,我就拿個簡單的網站做說明,假設為一個DZ做的論壇,那要加強網頁權重,我們可以做那些事,當然我們說的是rel= canonical這個標簽:

一,使用偽靜態,註意一下3點:

1.在robots.txt中禁止所有動態地址Disallow: /*.php;

2.禁用Archiver,理由可以GOOGLE下Archiver優化。

3.修改forumdisplay.php文件,將$extra = rawurlencode(page=$page$forumdisplayadd);改為$extra = rawurlencode(page=1$forumdisplayadd);

解釋:帖子的URL形式是thread-(tid)-(page)-(forumdisplay page).html,最後一節表示此帖在列表頁的第幾頁。所以當帖子越來越多,這個帖就會由第一頁到第二頁…,它的URL就會不斷的變化。解決辦法就是它都變成1。不足就是當從這個帖子返回列表頁時,隻能返回到第一頁瞭。

這樣處理站內鏈接形式單一、規范而且通暢,不影響收錄。如果不想禁止動態形式,或有別人鏈接瞭不規范形式,也可以做下面的修改.

二,動態URL形式,給非標準URL頁面加canonical tag,指向權威網頁

以discuz 7.0 為例

1.給viewthread.php加link rel=canonical

修改viewthread.php文件,在$page = max($page, 1);上面(程序調用包含文件結束),加一行$extrahead .='<link rel=canonical href=viewthread.php?tid=’ .$tid. ‘ />’;

2.給打印頁(有printable參數的)加canonical tag

修改打印頁模板templates\default\viewthread_printable.htm文件,在<head>部分加 $extrahead 。

3.給redirect.php形式的頁子加權威鏈接

這個程序其實對參數處理後,調用的就是viewthread.php,所以自然就有link rel=canonical瞭。

4.為archiver頁加link canonical標簽

1)修archiver/index.php文件:在global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav;行下加一行:global $extrahead;

在<meta http-equiv=Content-Type content=text/html; charset={$charset} />行下加一行:$extrahead 。

2)修必archiver\include\thread.inc.php:此文件中有兩個showheader();,在第二個的上面加一行:$extrahead .='<link rel=canonical href=viewthread.php?tid=’ .$tid. ‘ />’;

至此帖子所有形式的URL(動態、打印頁、redirect.php、靜態和archiver)都有link rel=canonical標簽,指定viewthread.php?tid=888 這種形式為標準版本,權重和收錄都會轉到它。

對於列表頁,因形式簡單,且archiver列表頁未與正常列表一一對應,沒有做修改。

三,既有偽靜態又加link canonical到靜態地址的做法

1.將第二點中所有 $extrahead .='<link rel=canonical href=viewthread.php?tid=’ .$tid. ‘ />’; 換成$extrahead .='<link rel=canonical href=thread-‘ .$tid. ‘-1-1.html />’; 即改成以thread-3-1-1.html這種靜態形式為首選版本。

2.將archiver內容頁最下的完整版本鏈接改為靜態形式

修改archiver/include/thread.inc.php,將 viewthread.php?tid=$tid替換為thread-{$tid}-1-1.html

3.為redirect.php頁做301跳轉到靜態形式URL

修改文件,使用php代碼實現301跳轉,把require_once DISCUZ_ROOT.’./viewthread.php’;替換為header(HTTP/1.1 301 Moved Permanently);
header( Location: thread-{$tid}-1-1.html );

文件中共有四個地方要替換,但在7.0的前臺隻看到瞭lastpost這個形式。

其中2.3.其實都會有link canonical,但百度不支持,直接到標準形式為好。

供稿 醫美網