登录 | 公告:

discuz优化之网址规范化,支持canonical新标签属性

作者:SEO小工  时间:2009-02-18

关键字: 网址规范化,canonical,discuz

discuz的URL形式复杂,动态,打印页、精华参数,列表页参数变化,跳转形式,Archiver,再加上静态化形式,形成了多个副本内容,搜索引擎对也其按各自的技术选择了不同的首选URL,因此各种形式的URL好坏也意见不一。

使用301和robots可以解决一些,再加上新属性canonical tag,可能将各种形式URL的权重转到指定的首选版本上。内部搜索引擎优化工作可以说完成了很重要的一项。(还要兼顾百度不支持canonical)。

一,使用伪静态。做好三点实现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)-(forumdisplay page).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"了。

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,但百度不支持,直接到标准形式为好

补充:在SEO论坛中有最全最新的 discuz SEO 优化文章,请访问那里。

原文链接:http://seo.banmutian.org/thread-13-1-1.html
作者:SEO小工 原载:http://seo.banmutian.org/
版权所有。转载请以链接形式注明作者、原始出处和本声明。

赞助商链接

©2008 shyedu.net 陕ICP备09001817号