05
Aug

**************SEO

让“最后发表、上一主题“等跳转到静态地址
本帖最后由 SEO小工 于 2009-5-12 14:56 编辑

类似redirect.php?tid=7&goto=lastpost这种形式URL的页面的子内容和thread-1-1-1.html一样的,但URL形式不一样,SE会当成重复内容。
这种URL形式会出现在主页、版块列表页的最后发表或最后回复位置,discuz7以前版本的上一主题、下一主题等也是此种形式的URL,现在虽然没有,但在代码中还能找到那些参数。

为什么不禁止这种URL形式的索引?
1.主要是不能控制别人链接到这种形式,如果禁止索引这种形式的URL就浪费了链接,所以要做301跳转,把链接和权重转移到标准的静态形式。
2.链接形式出现在首页,不禁止或许可以加快录

给redirct.php做301跳转
有的情况下程序要查找才能得到要显示的tid,所以只能修改程序,用php代码实现301跳转。
打开 redirect.php 文件,将 require_once DISCUZ_ROOT.’./viewthread.php’; 替换为
header(“HTTP/1.1 301 Moved Permanently”);
header( “Location: thread-{$tid}-1-1.html” );

文件中共有四处,都修改完就可以访问论坛,检查下效果了。
**************Discuz SEO 悄悄地在改变

最近写了一些discuz 7.0 seo 优化的文章,其中有给discuz加新的canonical URL tag的方法,当然大部分还是我用5.0时的经验。

用了7.0,除了显而易见的变化(如discuz meta),通过看程序,发现Discuz悄悄地在改变
—————————————————————————-
帖子页的URL形式有很多,我们可以通过修改viewthread.php和archive给内容页上canonical URL,都指向静态URL形式来集中权重。

但是,这个伪静态地址也不是唯一的:thread-{tid}-{page}-(forumpage).html, 由内容页URL组成可见最后一段数字是代表帖子在这个版块列表的第几页,当新帖子不断增加,老帖会被挤到第二页,第三页…这样它的URL就会不断地变化。

解决方法:修改forumdisplay.php
将$extra = rawurlencode(“page=$page$forumdisplayadd”);
改为$extra = rawurlencode(“page=1$forumdisplayadd”);
这样,最后一段固定为1,但有个缺点,用户从这个帖子只能返回列表页的第一页了。

discuz悄悄地在改变:上面的问题还是以观察收录结果是发现的,不过偶然看到7.0的global.func.php文件,发现对帖子页进行静态化地址替换的函数有所变化
function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = ”) {
    return ‘<a href=”thread-’.$tid.’-’.($page ? $page : 1).’-’
    .($prevpage && !IS_ROBOT ? $prevpage : 1).’.html”‘.stripslashes($extra).’>’; }
也就是说,现在discuz会针对搜索引擎,把最后一段固定生成为1来解决这个问题。虽然是针对用户和搜索引擎分别处理,但内容都是一样的,并没有欺骗,应该还是没问题的。
另外,在伪静态替换中发现对robots进行了特殊处理,说明动态地址没有处理这个问题。
*******************discuz 搜索引擎优化之网址规范化,支持canonical新标签属性

有点乱了:见全面清晰的 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列表未与正常列表对应,未做修改。

 

******************discuz!论坛搜索引擎优化之:Archiver的是是非非

Archiver在discuz优化中是否使用,很多人以部分搜索引擎收录Archiver页面多排名好为依据支持。但Archiver为什么排名好,有哪些优点,又有哪些缺点?在对discuz全面优化后,是不是应该禁止Archiver?
原文:discuz!论坛搜索引擎优化之:Archiver的是是非非 by SEO小工,首发顺义区教育信息网首页。请保留版权信息。

Archiver页面的优势

1.URL简单唯一:不用伪静态的情况下,正常页面的URL也不复杂,但是还有打印页,跳转页等各情形式的URL;而Archiver的URL总是简单唯一,利于索引。(请看google的动态地址与静态地址了解伪静态信息)
2.页面干净,信噪比高:这是显而易见的,也是最重要的优点,archiver几乎只保留了正文内容。因此与正常页面的各种URL形式比较,被SE选为权重高的页面,而把其它的做为复制内容剔除很正常。

Archiver页面SEO的不足

1.简单过头,基本优化不足:如:keyword,description都是相同的;内容中不解析UBB代码,所以使正常的加粗、链接失去作用;
2.不合习惯,失去链接优势:因为不解析UBB代码,用户友好性差,可能都会切到正常页面阅读,因此可能别人在做链接的时候也不会链到Archiver页面,失去了链接;同样站内的链接因为不解析UBB也失效了。

综合优化设置及Archiver优化建议

在没有对discuz时行优化修改情况下,我想还是很难取舍的,但如果对discuz进行全面的优化,使正常页面具有Archiver优势(页面对游客简化,毕掉其它URL形式),而没有它的缺点,这时效果是最佳的,当然不用开启Archiver了。

Archiver优化建议:全面优化后不需要archiver,只做简单讨论,以discuz7.0为例:
1.删除meta标签:将archiver/index.php文件最后的keyword和descirpton标签删除。
2.解析UBB标签:在archiver/include/thread.inc.php文件里找到$post['message'] = preg_replace(“/\<br \/\>/e”, “jammer()”, $post['message']); 其中$post['message']就是要显示的主要内容,可以用正则表达式对b,url等UBB标签进行替换。

 

***************meta robots标签,禁止无效页面的收录
#discuz会产生哪些无效的页面,有什么问题
1.删除了的帖子、版块,当访问时返回帖子不存在的提示信息页。
2.设置了一定权限才能浏览的帖子、版块,很多情况会泄露链接,得到没权限的提示
3.其它各种情况下的提示信息页面。这些都是给用户看的,没有实质内容,都禁止收录。

其实最大的问题还是副本内容的问题,因这些不同的URL,返回的却是相同的内容。对SE不友好。其实对于删除了内容,应该返回404,但为了简单,都使用加meta robots标签,禁止ES收录的方法来解决。

#修改提示信息页面,解决重复内容问题
1.建立/templates/defualt/header_norobot.htm文件
完全拷贝header.htm的内容,在<title>下再加一行:
<meta name=”robots” content=”noindex,nofollow” />
2.修改/templates/default/showmessage.htm文件
将{subtemplate header}替换为{subtemplate header_norobot}
3.修改/templates/default/nopermission.htm文件
将{subtemplate header}替换为{subtemplate header_norobot}

如此修改之后,SE就不会收录无权访问的URL,对于已删除的帖子,因为禁止收录了,过一段时间也会从索引中删除。这样,给SE的都是一些有内容的网页,对于提高权重会有好处。

#另一种简单的修改发方法
想想原来真是笨,其实只要修改global.func.php文件中的showmessage函数就可以了。
在第四行 define(‘CACHE_FORBIDDEN’, TRUE); 后面加上:
$extrahead .=’<meta name=”robots” content=”noindex,nofollow” />’;
***************给discuz加canonical URL标签,规范化网址
Discuz的网址规范化有很多问题,即同样的内容,有着好多不同的URL。下面使用canonical URL TAG新标准来处理这些问题。

一,给viewthread.php页加canonical URL

可以发现这种动态的链接形式最多了,有不同的参数但内容一样,当然现在的SE能够处理这些问题,但但很难判断首选显示URL方式,或者当他们都有返回链接时,不能集中权重。为了解决类似的重复网页问题,googel,yahoo,live,ask.com都宣布支持一个新的标签属性,以把链接和权重都集中到一个首先的URL上。

1.给viewthread.php加canonical URL标签,指定帖子的静态地址为首选版本。
修改viewthread.php文件,在$page = max($page, 1);上面(程序调用包含文件结束),加一行$extrahead .=’<link rel=”canonical” href=”thread-’ .$tid. ‘-1-1.html” />’;
2.给打印页加canonical tag
虽然打印页viewthread.php?action=printable…..也是调过这个程序生成数据,但用了不同的模板,要把变量$extrahead 加进去,修改tmplates\default\viewthread_printable.htm
在<head>部分<title>的下面加一行: $extrahead

二.给forumdisplay.php加canonical tag
在include template(‘forumdisplay’);上加一行:
$extrahead .=’<link rel=”canonical” href=”forum-’ .$fid. ‘-’ .$page. ‘.html” />’;

三.为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=”thread-’ .$tid. ‘-1-1.html” />’;

四.将archiver内容页最下的“本看完整版本”链接改为静态形式
修改archiver/include/thread.inc.php,将 “viewthread.php?tid=$tid”替换为”thread-{$tid}-1-1.html”

如果您是以动态URL形式为首先版本,上述相应位置应替换为如下语句:
$extrahead .=’<link rel=”canonical” href=”viewthread.php?tid=’ .$tid. ‘” />’;
*************discuz title,meta 标签优化
disucz的meta信息能够自动生成了,以为会优化好,可是细看原来有许多问题。

#先看看discuz的默认设置:<title>$navtitle $bbname $seotitle – Powered by Discuz!</title>

<meta name=”keywords” content=”{$metakeywords}$seokeywords” />

<meta name=”description” content=”$metadescription $bbname $seodescription – Discuz! Board” />
复制代码这一模板是应用到 主页 版块列表页 帖子内容页 三类页面的,这样会产生些问题
1.seotitle为后台标题附加字,会使所有帖子页中title变成 标题+版名+站名+标题附加字,太冗长了,标题重复率太高(当然后台不设置此项内容就没问题)。
2.seokeywords为后台全局设置的关键字,会在全站的页中重复,关键字没个性,堆积。
3.seodescription:后台全局设置的说明属性,会在主页和每个版块列表页显示。

#优化后的目标,各页只显示自己独特简洁的title和meta信息:
1.主页:title是站名+标题附加字;keywords和description是后台“全局》优化设置”中的值
2.列表页:title是版名;meta是后台“版块》版块管理”中设置的“版块关键字和版块简介”
3.帖子页:title是 标题+站名;keywords是tag标签;description是原来自动截取的内容

#修改方法
当然这些值都是DZ原来实现了的,只是显示的有些混乱,有些变量在不同页面中也改变了用途,如果修改各个程序比较麻烦,这里用了一个不标准的土方法,只需修改一个文件:
将模板文件header.htm中原来<title>至<meta naem=”description”各行替换如下:<title>$navtitle $bbname <!–{if empty($navtitle)}–>$seotitle<!–{/if}–></title>

$seohead

<!–{if empty($navtitle)}–>

    <meta name=”keywords” content=”$seokeywords” />

    <meta name=”description” content=”$seodescription” />

<!–{elseif empty($metadescription)}–>

    <meta name=”keywords” content=”$metakeywords” />

    <meta name=”description” content=”$seodescription” />

<!–{else}–>

    <meta name=”keywords” content=”$metakeywords” />

    <meta name=”description” content=”$metadescription” />

<!–{/if}–>
复制代码
***************小设置解决discuz首页URL规范化问题
先看一个问题:为什么www.discuz.net的PR是8,而www.discuz.net/index.php是PR是6?
是的,它们是调用的同一个程序,当然也是同一个内容,但是它们的URL是不一样的,因此搜索引擎会当作重复内容的两个页面,所以会有不同的PR。这其实是有问题的,即网址规范化问题产生的重复网页。

对于相同内容的两个页面,SE会选择一个权重高的做为首选,给予高的排名,显示在搜索结果中,而另一个排名很低或不收录。这一过程需要一定的时间判断。貌似这样也没有什么问题,但是,却分散了权重。像上面的例子,两个页面就是同一个内容,外链一般链接到主域名上,内链却链接到index.php文件上,虽然都有了很高的PR,但同样的内容,把链接分散到两个URL上,分散了权重,没有必要。

discuz后台:首页文件名设置小技巧,统一首页URL
统一首页URL很简单,将 全局》站点信息 中 首页文件名 设为论坛的主域名或主目录。
以discuz.net为例,论坛首页是http://www.discuz.net/,那么这个首页文件名也设为http://www.discuz.net/。这样,站内到主页的链接和外部链接就一致了。

related post you maybe interested in

, ,

Add reply