Discuz论坛的SEO优化方案
|
源代码网整理以下设discuz已启用伪静态功能,使用5.0/5.5 GBK 版本; 源代码网整理以下1、meta,content 优化 源代码网整理以下更新 源代码网整理以下一、meta的优化 源代码网整理以下discuz的后台可以对meta信息进行设置,甚至可以添加自己的头部信息,但它的设置都是针对于所有页面的,全部页面都拥有相同的keywords和description是SEO所不赞成的。 源代码网整理以下方案一:删除meta 源代码网整理以下修改页头模板文件 templates/default/header.htm:将meta的keywords和description标签删除。 源代码网整理以下这两个标签作用很小了,而且还有discuz自带的一些无用信息,用得不好反而会有坏作用,因此宁缺勿滥。 源代码网整理以下方案二:定制meta 源代码网整理以下本部分实现了将内容页keywords设为帖子标题,description为内容前100字;也实现了主页与各版列表页meta的单独设置(不同版的不同,同一版各列表页相同)。 源代码网整理以下1.修改页头模板文件 templatesdefaultheader.htm:将meta的keywords和description标签改为如下形式 源代码网整理以下<meta name="keywords" content="{$metakeywords}$seokeywords" /> 源代码网整理以下这里的$seokeywords、$seodescription就是后台设置的那个值,下面说怎么定制这个值;{$metakeywords}是奇虎的关键字,留下以后处理 源代码网整理以下2.内容页(viewthread)设置keywords为帖子标题,description为内容前100字 源代码网整理以下2.1修改 viewthread.php 文件: 源代码网整理以下2.2创建 include/bmt.thread.inc.php 文件,内容为 源代码网整理以下<?php 源代码网整理以下$seokeywords = strip_tags($thread["subject"]); //关键字设为帖子的标题 源代码网整理以下$seodescription = current( $postlist );//description取文章内容的前100字 源代码网整理以下*此处数字和个别函数适用于GBK版本 源代码网整理以下最后一行作用是过滤内容中的html,否则在meta中会引起语法错误。先是去除HTML标签,但因为这里是前100字,有可能html标签已经被截断了,所以又用了htmlspecialchars转义一下,有可能会有些垃圾信息。 源代码网整理以下*所以此处表达式您需要根据自己的情况修改。 源代码网整理以下别外说明,此处数据都是viewthread.php已取好的,所以不会产生额外的数据库操作,只是做了字符串处理,不会引响效率。 源代码网整理以下3.列表页(forumdisplay)设置不同的keywords和description 源代码网整理以下3.1修改 forumdisplay.php 源代码网整理以下文件,在 include template("forumdisplay"); 语句上面添加 源代码网整理以下3.2创建 include/bmt.forum.inc.php 文件,内容为 源代码网整理以下<?php 源代码网整理以下switch ( $forum["fid"] ){ 源代码网整理以下} 源代码网整理以下//更新:一般情况下可以不用switch和case,列表页的关键字为版名,说明为版的说明,若要对某个版设置特殊的关键字和说明,可以设置case。这样解决了版面很多时要设置很多case语句,加快了程序执行速度(不了解php,JAVA的 case进行了优化,执行很快) 源代码网整理以下使用修改文件来实现,每版的meta改起来不方便,感觉有些弱智,呵呵。但没有改数据库,用了两个单独的文件,修改了两个文件也很简单,这样升级或迁移更方便吧 源代码网整理以下case虽然多了一些,但比起读数据库的记录,速度应该快很多 源代码网整理以下4.主页meta 源代码网整理以下content的优化 源代码网整理以下实施方案 源代码网整理以下1.隐藏内容页(viewthread)中的无用信息: 源代码网整理以下用<!--{if $discuz_uid}--> <!--{/if}-->将要隐藏的信息包含起来。 源代码网整理以下准确的说是当游客(bots)访问时,隐藏那些信息,当用户登录后是正常的,所以不影响使用。 源代码网整理以下2.为标题加上 源代码网整理以下将 <span class="bold">$post[subject]</span><br><br> 替换为 源代码网整理以下定制“本帖最后由 XXX 于 xxxxxx 编辑”内容 源代码网整理以下修改文件 templates/default/misc.lang.php:将下面两行改成您喜欢的内容: 源代码网整理以下"post_edit" => "
[[i]] 本帖最后由 $editor 于 $edittime 编辑 [/i]]", 源代码网整理以下比如我改成 [ 网站名 URL xxx 于 xxxx 编辑]。改程序无聊时的自娱,呵呵 源代码网整理以下二、内容页的网页复制问题 源代码网整理以下看看内容页的URL大家就知道了:thread-(tid)-(page)-(forumdisplay page).html,可以看出最后一节表示的是此帖在列表页的第几页。所以,当您的帖子越来越多,这个帖就会由第一页到第二页...,它的URL就会不断的变化。其实打开一个列表页就可以看出来,第2页的帖子链接的最后数字都是2,第3页的都是3,只是很少注意它。我是在SE的收录中发现复制网页越来越多,才对最后的数字注意的。 源代码网整理以下解决方法 源代码网整理以下将 $extra = rawurlencode("page=$page$forumdisplayadd"); 语句替换为 源代码网整理以下语句中的page就是forumdisplay page,这样改后不管帖子在列表页的第几页,这个数都是1。 源代码网整理以下功能损失:当用户编辑帖子或版主管理帖子后,有个提示跳转页:选择转入列表页还是主题页,这时转入列表页的话,只能转到列表页第一页,而不管您原来停留在第几页。 源代码网整理以下redirect的301重定向 源代码网整理以下在discuz论坛中可以看到类似redirect.php?tid=xxx&goto=lastpost#lastpost这样的链接,它的功能是实现“最新发表、最后发表、上一主题、下一主题“功能,仅这一个功能就可以给同一个内容页造成四份复制网页,因此将这样的链接301永久重定向到帖子的静态地址。 源代码网整理以下解决方法 源代码网整理以下将前两个 require_once DISCUZ_ROOT."./viewthread.php"; 语句替换为 源代码网整理以下dz5.5的引用处也有个跳转,也可以做301: 源代码网整理以下将 dheader("Location: viewthread.php?tid=$post[tid]&page=$page#pid$pid");替换为 源代码网整理以下***注意此处直接转到了静态地址,没有做判断是否开启伪静态功能,所以不开启会有问题 源代码网整理以下功能损失:转向到静态地址后,动态地址中类似#lastpost的锚点将无法起作用了,可能要手动滚屏了 源代码网整理以下提示信息页的网页复制 源代码网整理以下这个问题和内容页也有着很大的关系,呵呵。如管理员设置允许游客浏览列表,而禁止浏览内容时,这些内容页都将返回一没有权限的提示信息页,但它们的URL 是不同的,这样就形成了严重的网页复制,此外还有其它形成的无权操作等。别一种提示信息如帖子不存在等,数量大了也会形成网页复制。这两种提示信息,都是通过showmessage函数分别调用nopermission.htm和showmessage.htm两个模板实现的。 源代码网整理以下解决方法 源代码网整理以下<meta name="robots" content="noindex,nofollow" /> 源代码网整理以下2.分别修改 templates/default/nopermission.htm 和 templates/default/showmessage.htm 文件 源代码网整理以下虽然对meta robots标签支持的不是很广泛,但这是比较省事的方法 源代码网整理以下三、robots.txt使用 源代码网整理以下User-agent: * 源代码网整理以下#禁止一个版面的收录 源代码网整理以下#数字即为要禁止版块的ID。 源代码网整理以下#再禁网页复制 源代码网整理以下Disallow: /forumdisplay.php 源代码网整理以下hekaiyu说没有这个问题,去官方看了下5.5的确没问题(也许我的5.0本来没问题,也许官方在新版本中完善了正则表达式的替换规则),这样更好了,禁止它,又干净了好多 源代码网整理以下#禁止其它无用内容 源代码网整理以下首页URL问题 源代码网整理以下后台基本设置->首页文件名如果不设置,会默认为index.php。所以站内到首页的链接为形式为http: //domain/index.php。而我们一般引用论坛首页或交换链接的形式一般是http://domain/。实际是一样的,但SE可认为是两个 URL,而且一个拥有很多的内部链接,一个拥有较多的外部链接,所以哪个被降级都不是好事情,最好统一起来。这里的修改目标是http: //domain/的形式。 源代码网整理以下1.进入后台,基本设置->首面文件名 设置为: / 源代码网整理以下if( $indexname=="/"){ 源代码网整理以下[更新]dz5.5为dheader 源代码网整理以下此修改处的功能是清除cookies后返回到首页,如不修改域名后就有两个/。暂时未发现使用/当首页文件名的其它问题 源代码网整理以下结 束 源代码网整理以下除了文件的修改,有些地方要配合后台设置,前面都提到了,这里总结一下。主要有:1.URL静态化,只启用普通页面静态化就可以了;2.不要启用 Archiver功能;3.后台的keywords和description设置只是针对首页的(如果您没做列表页和内容页的meta修改则也应用到它们);4.后台首页文件名为/(当然您也可以设置自己特定的) 源代码网供稿. |
