Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[展示] discuz 搜索引擎优化之网址规范化,支持canonical新标签属性

[复制链接]
SEO小工 发表于 2009-2-21 21:54:14 | 显示全部楼层 |阅读模式
本帖最后由 SEO小工 于 2009-5-8 12:40 编辑

有点乱了:见全面清晰的 discuz SEO

简单说,就是DZ同一篇帖子,却有好多不同的网址(URL),这让搜索引擎不知道显示哪个好,别人做了链接,权重也不能集中。

2月12号,google,yahoo,live宣布了一个新标签,后来ask.com也宣布支持,就是<link rel="canonical" href="canonical URL ">,可以指定一个首选的URL,会把链接及权重都转移到这个URL上。

我做的修改就是给DZ加上这个标签,让不管什么URL形式的帖子都会指向一个标准的URL上。

这是google中文官方的说明:http://www.googlechinawebmaster.com/2009/02/url.html


示例:http://www.yingsheng.net/
效果:帖子所有链接形式(viewthread.php带分页参数、打印参数等各种形式 和 archiver页)都加上标签,<linkrel="canonical" href="thread-23533-1-1.html" />
即设置thread-23533-1-1.html这种形式为首选,会把权重都转移给它,搜索结果中也显示它。

archiver下面的查原帖地址也改为 静态形式。
rediretc.php的动态形式 301到静态形式。

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

使用301和robots控制可以解决一些问题,这次推出link新属性canonical 指定首选版本,某种程度上解决了discuz的网址规范化问题,消除了副本内容的影响(还要兼顾百度,它不支持canonical)

一,使用伪静态规范化discuz网址最简单

对于新站,开启伪静态,同时再做:
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。不足就是当从这个帖子返回列表页时,只能返回到第一页了。

这样处理站内链接形式单一、规范而且通畅,不影响收录。同时SE还没有收录其它形式,不会对已有收录产生么影响,也很少会有人链向非标准形式。

二,已收录各种形式URL 或 不支持伪静态

情况复杂,这时就用canonical tag指定权威链接的功能了,下面以viewthread.php?tid=888为规范版本说明如何添加link tag。

修改后,所有帖子页(包括redirect.php,静态化的或archiver)都含有link canonical标签,指定viewthread.php?tid=888这种形式为首选版本。当然下面的修中,你也可以稍做变化,指定thread-1-1-1.html为首选版本。

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标签

a)修archiver/index.php文件:在 global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav; 行下加一行:global $extrahead;
在< http-equiv="Content-Type" content="text/html; charset={$charset}" />
行下加一行:$extrahead 。
b) 修改archiver\include\thread.inc.php:此文件中有两个showheader();,在第二个的上面加一行:$extrahead .='<link rel="canonical" href="/viewthread.php?tid=" .$tid. '" />';

三,既做伪静态又加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这个形式。

对于列表页,问题不大,且archiver列表未与正常列表对应,未做修改。


经常修改,如果有人要修改最好访问原文
原文链接:http://seo.banmutian.org/thread-13-1-1.html
作者:SEO小工,原发:seo技术版,转载请以链接形式注明作者、原始出处和本声明。谢谢。
xinruby02 发表于 2009-2-21 22:43:43 | 显示全部楼层
本帖最后由 xinruby02 于 2009-4-17 18:29 编辑


这个相当于是优化搜索引擎?
http://www.pepeba.com/bbs
回复

使用道具 举报

qhdyezhu 发表于 2009-2-21 22:47:45 | 显示全部楼层
http://my0335.com
虽然没看懂,学习了
回复

使用道具 举报

yah007 发表于 2009-2-21 22:48:08 | 显示全部楼层
沙发。。。
回复

使用道具 举报

 楼主| SEO小工 发表于 2009-2-21 23:03:42 | 显示全部楼层
本帖最后由 SEO小工 于 2009-2-21 23:07 编辑

这个相当于是优化搜索引擎?
http://bbs.pepeba.com
xinruby02 发表于 2009-2-21 22:43

嗯呢,你的位置不错。

你的论坛很适用。动态。链接形式变化较多,加上权威链接,对google,yahoo,live很好
回复

使用道具 举报

lerado 发表于 2009-2-21 23:29:14 | 显示全部楼层
我的呢?现在有什么问题?
  看这个:手机技术服务区
回复

使用道具 举报

 楼主| SEO小工 发表于 2009-2-21 23:39:29 | 显示全部楼层
本帖最后由 SEO小工 于 2009-2-21 23:41 编辑
我的呢?现在有什么问题?
  看这个:手机技术服务区
lerado 发表于 2009-2-21 23:29

space静态化也没什么用,游客也看不了,不如在robots.txt中禁了。
你在URL中开启session id了?看来google都能处理了,yahoo收录些带sessionID的,
baidu把你K了?
回复

使用道具 举报

 楼主| SEO小工 发表于 2009-2-22 09:47:06 | 显示全部楼层
现在流行使用动态地址了吗?
SE不错,都能选择viewthread.php?tid=127这样的地址收录。
可别人或自己做链接的时候可能会带不同的参数,权重会分散,怎么转移到这唯一的URL上?

加link canonical修改,所有帖子页(包括静态化的或archiver)都含有link canonical标签,指定viewthread.php?tid=888这种形式为首选版本
回复

使用道具 举报

yah007 发表于 2009-2-22 11:19:10 | 显示全部楼层
我阅读过canonical相关的文章
的确被各大搜索引擎接受

google站长中心部落(英文)http://googlewebmastercentral.bl ... your-canonical.html
回复

使用道具 举报

 楼主| SEO小工 发表于 2009-2-22 14:26:32 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 15:48 , Processed in 0.029196 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表