論壇discuz 首頁增加canonical標籤-SEO優化指南

一,使用偽靜態。做好三點實現discuz網址規範化

開啟偽靜態,同時再做(1,2特別適合新站,老站宜保持原態 ):

1.在robots.txt中禁止所有動態地址"Disallow: /*.php";
2.禁用Archiver,理由見Archiver優化的是非。
3.修改forumdisplay.php文件,將$extra = rawurlencode("page=$page$forumdisplayadd");改為$extra = rawurlencode("page=1$forumdisplayadd");
解釋:帖子的URL形式是thread-(tid)-(page)-(forumdisplaypage).html,最後一節表示此帖在列表頁的第幾頁。所以當帖子越來越多,這個帖就會由第一頁到第二頁...,它的URL就會不斷的變化。解決辦法就是它都變成1。不足就是當從這個帖子返回列表頁時,只能返回到第一頁了。

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

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

可以從這裡了解canonical tag指定權威鏈接的功能,它能像301轉移所有權重(除了不跳轉)。下面以說明如何為discuz 7.0 添加link tag。
注意:修改是將canonical指向viewthread.php?tid=888形式的,要指向靜態形式先看下第三大點。

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"了,百度不支持,也可按 三第3小點301。

4.為archiver頁加link canonical標籤
1)修archiver/index.php文件:在global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav;行下加一行:global $extrahead;
在< http-equiv="Content-Type" c />
行下加一行:$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,但百度不支持,直接到標準形式為好~
最重要修改方法:

要為Discuz!首頁鏈接增加canonical指令,可以按以下方法操作
1. 用文本編輯軟件打開源/模塊/論壇/forum_index.php
2. 搜索$ gid = intval(getgpc('gid'));
3. 在$ gid = intval(getgpc('gid')); 下面添加以下代碼
if($gid < 1){
$_G = empty($_G) ? '' : $_G;
$_G = '<link rel="canonical" href="'.$_G.'" />' . $_G;
}



分類