谷歌、雅虎和live search 宣告支持link的一个新属性Canonical,为网页指定权威链(authoritativecanonical 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的博客中还看见,假如指定的权威网页没有被引得,将可能被迅即被引得,故此这个标签,在其他任何办法都无法消弭复制网页时,指出权威网页,将是最好的办法。
为了让菜鸟们充分明白这个属性,我就拿个简单的网站做申说,如果www.sooim.com为一个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" );
header( "Location: thread-{$tid}-1-1.html" );
文件中共有四个地方要替换,但在7.0的前台只看见了lastpost这个仪式。
其中2.3.实则都会有link canonical,但百度不支持,直接到标准仪式为好。