Discuz论坛的SEO优化方案
设discuz 已启用伪静态功能,使用5.5.5GBK 版本;1、meta,content 优化2、内容页的网页复制问题3、robots.txt 使用及其它更新discuz5.5的robots.txt
设discuz 已启用伪静态功能,使用5.5.5GBK 版本;
1、meta,content 优化
2、内容页的网页复制问题
3、robots.txt 使用及其它
更新
discuz5.5的robots.txt 问题
DZ 禁止一个版面帖子的收录的补充
一、meta 的优化
discuz 的后台可以对meta 信息进行设置,甚至可以添加自己的头部信息,但它的设置都是针对于所有页面的,全部页面都拥有相同的keywords 和description 是(亿推英文TuiGuang123_COM)所不赞成的。
方案一:删除meta
修改页头模板文件templatesdefaultheader.htm :将meta 的keywords 和description 标签删除。
这两个标签作用很小了,而且还有discuz 自带的一些无用信息,用得不好反而会有坏作用,因此宁缺勿滥。
方案二:定制meta
本部分实现了将内容页keywords 设为帖子标题,description 为内容前1字;也实现了主页与各版列表页meta 的单独设置(不同版的不同,同一版各列表页相同)。
1. 修改页头模板文件templates�faultheader.htm:将meta 的keywords 和description 标签改为如下形式
这里的$seokeywords、$seodescription就是后台设置的那个值,下面说怎么定制这个值;{$metakeywords}是奇虎的关键字,留下以后处理
2. 内容页(viewthread )设置keywords 为帖子标题,description 为内容前1字
2.1修改viewthread.php 文件:
在includetemplate('viewthread');(更新:dz5.5为
,iincludetemplate($iscircle?'supesite_viewthread':'viewthread');)语句的上面加入一行:
require_onceDISCUZ_ROOT.'.includebmt.thread.inc.php';
2.2创建includebmt.thread.inc.php 文件,内容为
if(!defined('IN_DISCUZ')){exit('AccessDenied');}
$seokeywords=strip_tags($thread['subject']);关键字设为帖子的标题
(已更新:nethome提出问题,当启用主题分类并允许按类别浏览时,原来代码会有问题。所以加了标签过滤, 本来在viewthread.php 中改更好,为以后升级方便,还是放在这里吧,subject 很短,不会影响效率)
,if(!defined('IN_DISCUZ')){exit('AccessDenied');}
$seokeywords=$forum['name'];
$seodescription=$forum['description'];
switch($forum['fid']){
case1:此数字为版的ID 号,不同版设置不同的meta
$seokeywords='key1,key2,...';
$seodescription='xxxxxxxxxxxx';
break;
case2:
$seokeywords='key1,key2,...';
$seodescription='xxxxxxxxxxxx';
break;
}
?>
更新:一般情况下可以不用switch 和case ,列表页的关键字为版名,说明为版的说明, 若要对某个版设置特殊的关键字和说明,可以设置case 。这样解决了版面很多时要设置很多case 语句,加快了程序执行速度(不了解php ,JAVA 的case 进行了优化,执行很快)
使用修改文件来实现,每版的meta 改起来不方便,感觉有些弱智,呵呵。但没有改数据库,用了两个单独的文件,修改了两个文件也很简单,这样升级或迁移更方便吧
case 虽然多了一些,但比起读数据库的记录,速度应该快很多
4. 主页meta
在后台设置即可。(如果2、3不做,则meta 也同主页)
content 的优化
discuz 有个archiver ,一是URL 容易收录,二是页面比较干静,还有description 会从正文中取内容,但archiver 没有对内容中[b ][url ]之类的解析,那些标签起不到作用,原样显示还会增加垃圾信息。
,本部分主要做两方面的优化,一是去除内容页的无用信息,二是给标题加上
。加上伪静态和上篇meta 的优化,效果就超过了archiver ,因此可以在后台禁用它,还减少了复制网页。
实施方案
1. 隐藏内容页(viewthread )中的无用信息:
修改内容页模板文件templatesdefaultviewthread.htm :
用将要隐藏的信息包含起来。
准确的说是当游客(bots)访问时,隐藏那些信息,当用户登录后是正常的,所以不影响使用。
这些信息主要指的是左侧用户信息栏、(资料个人空间主页短消息等等)、用户的签名(隐藏后不怕签名的内容影响正文,链接也不起作用了:P)
以住相关文章
2. 为标题加上
标签
修改内容页模板文件templatesdefaultviewthread.htm :
将
替换为
$post[subject]
定制“本帖最后由XXX 于xxxxxx 编辑”内容
修改文件templatesdefaultmisc.lang.php :将下面两行改成您喜欢的内容: 'post_edit'=>'nn[[i]]本帖最后由$editor于$edittime编辑[i]]',
'post_edit_regexp'=>'n{2}[[i]本帖最后由.*?于.*?编辑[i]]$s', 比如我改成[网站名URLxxx 于xxxx 编辑]。改程序无聊时的自娱,呵呵
注意上下两个表达式要匹配。为了防止解析方括号是全角,不要复制后在文件中查找。
二、内容页的网页复制问题
看看内容页的URL 大家就知道了:thread-(tid)-(page)-(forumdisplaypage),可以看出最后一节表示的是此帖在列表页的第几页。所以,当您的帖子越来越多,
,这个帖就会由第一页到第二页... ,它的URL 就会不断的变化。其实打开一个列表页就可以看出来,第2页的帖子链接的最后数字都是2,第3页的都是3, 只是很少注意它。我是在SE 的收录中发现复制网页越来越多,才对最后的数字注意的。 解决方法
修改forumdisplay.php 文件:
将$extra=rawurlencode("page=$page$forumdisplayadd");语句替换为 $extra=rawurlencode("page=1$forumdisplayadd");
语句中的page 就是forumdisplaypage ,这样改后不管帖子在列表页的第几页,这个数都是1。
功能损失:当用户编辑帖子或版主管理帖子后,有个提示跳转页:选择转入列表页还是主题页,这时转入列表页的话,只能转到列表页第一页, 而不管您原来停留在第几页。
redirect 的31重定向
在discuz 论坛中可以看到类似redirect.php?tid=xxx&goto=lastpost#lastpost这样的链接,它的功能是实现“最新发表、最后发表、上一主题、下一主题“功能,仅这一个功能就可以给同一个内容页造成四份复制网页,因此将这样的链接31永久重定向到帖子的静态地址。
解决方法
修改redirect.php 文件:
将前两个require_onceDISCUZ_ROOT.'.viewthread.php';语句替换为 $bmt_url='Location:thread-'.$tid.'-'.$page.'-1';
header('HTTP1.131MovedPermanently');
header($bmt_url);
将后两个require_onceDISCUZ_ROOT.'.viewthread.php';语句替换为 $bmt_url='Location:thread-'.$tid.'-1-1';
header('HTTP1.131MovedPermanently');
header($bmt_url);
dz5.5的引用处也有个跳转,也可以做31:
将
,dheader("Location:viewthread.php?tid=$post[tid]&page=$page#pid$pid");替换为
$bmt_url='Location:thread-'.$post[tid].'-'.$page.'-1#pid'.$pid; header('HTTP1.131MovedPermanently');
header($bmt_url);
***注意此处直接转到了静态地址,没有做判断是否开启伪静态功能,所以不开启会有问题
功能损失:转向到静态地址后,动态地址中类似#lastpost的锚点将无法起作用了,可能要手动滚屏了
? 好像没有影响锚点
提示信息页的网页复制
这个问题和内容页也有着很大的关系,呵呵。如管理员设置允许游客浏览列表,而禁止浏览内容时,这些内容页都将返回一没有权限的提示信息页,但它们的URL 是不同的,这样就形成了严重的网页复制,此外还有其它形成的无权操作等。别一种提示信息如帖子不存在等,数量大了也会形成网页复制。这两种提示信息,都是通过showmessage 函数分别调用nopermission.htm 和showmessage.htm 两个模板实现的。
解决方法
1. 创建另一个头模板文件templatesdefaultheader_disbots.htm
内容同header.htm 文件,但加入metarobot 标签,如下
2. 分别修改templatesdefaultnopermission.htm 和
templatesdefaultshowmessage.htm 文件
将它们第一行的{templateheader}替换为{templateheader_disbots} 虽然对metarobots 标签支持的不是很广泛,但这是比较省事的方法
因为是提示信息页,用31来实现的话,还要传给转到的页好多信息,修改起来比较麻烦
三、robots.txt 使用
User-agent:*
,#禁止一个版面的收录
#如果有个水版,不想禁止游客权限,也不想SE 收录,已免影响网站质量,可以用如下方法
Disallow:forum-1-
#数字即为要禁止版块的ID 。
#注意数字最后的-不要省略,否则连ID 为11,12等1开头的版都禁了
[更新]补充方法:再给内容页加metarobot 禁止
#再禁网页复制
Disallow:viewthread.php
#这个是内容页的动态形式,前面对伪静态做了优化并修改了很多的复制网页,因此这里动态形式如打印页等一定要禁止
Disallow:forumdisplay.php
#这个要慎重:列表页的动态形式,还包括精华、活动、投票等形式。我发现5. 的静态化不彻底,它的上一页下一页翻页仍是动态,这样如果禁止了,十页之后的内容就不能通这索引了。所以如果您站内的交差链接不丰富的话,不要在此禁止,以免影响收录。
hekaiyu 说没有这个问题,去官方看了下5.5的确没问题(也许我的5. 本来没问题,也许官方在新版本中完善了正则表达式的替换规则) ,这样更好了,禁止它,又干净了好多
#禁止其它无用内容
Disallow:profile
#用户信息,不知为什么discuz 也静态化了,一律禁止
Disallow:relatethread
Disallow:post
Disallow:blog
Disallow:member
Disallow:misc
Disallow:faq
Disallow:my
,Disallow:pm
Disallow:digest
Disallow:status
#......等等
#-----robots.txtend------
[更新]dz5.5的robots.txt 后部分给出的Disallow:post.php等是不合规范的,一定要在前面加上"" 。>>详细说明
首页URL 问题
后台基本设置->首页文件名如果不设置,会默认为index.php 。所以站内到首页的链接为形式为http:domainindex.php。而我们一般引用论坛首页或交换链接的形式一般是domain 。实际是一样的,但SE 可认为是两个URL, 而且一个拥有很多的内部链接,一个拥有较多的外部链接,所以哪个被降级都不是好事情,最好统一起来。这里的修改目标是http:domain的形式。
1. 进入后台,基本设置->首面文件名设置为:
2. 修改文件member.php 将header("Location:{$boardurl}".$indexname);替换为
if($indexname==''){
header("Location:{$boardurl}");
}else{
header("Location:{$boardurl}".$indexname);
}
[更新]dz5.5为dheader
此修改处的功能是清除cookies 后返回到首页,如不修改域名后就有两个。暂时未发现使用当首页文件名的其它问题
结束
除了文件的修改,有些地方要配合后台设置,前面都提到了,这里总结一下。主要有:1.URL 静态化,只启用普通页面静态化就可以了;2. 不要启用Archiver 功能;3. 后台的keywords 和description 设置只是针对首页的(如果您没做列表页和内容页的meta 修改则也应用到它们);4. 后台首页文件名为(当然您也可以设
,置自己特定的)
亿推英文新闻稿推广TuiGuang123, 亿推Tuiguang123英文新闻稿推广, 亿推英文新闻稿代发TuiGuang123, 亿推Tuiguang123英文新闻稿代发, 亿推英文新闻稿服务TuiGuang123, 亿推Tuiguang123英文新闻稿服务。亿推(TuiGuang123_COM) 提供标准化的英文软文发布、英文新闻稿撰写服务。专业的英语本土软文写手,100篇英文软文可在一周内完成。欢迎国内外贸客户或外贸推广合作伙伴联系业务共谋发展。联系方法,在百度搜索“亿推英文推广”或直接访问Tuiguang_COM