seo
WordPress All in one seo插件生成NoIndex对百度爬虫影响的解决方法
发现All in one seo 插件严重影响baidu收录,采取如下措施
1 在head模板加入如下正对googlebot的判断代码
<?php if ( !(is_home()) and !(is_single()) ) { ?> <meta name=”Googlebot” content=”noindex,follow” /> <?php }?>
2 关闭All in one seo插件所有的生成Noindexde选项
Use noindex for Categories: Use noindex for Archives: Use noindex for Tag Archives:
PR输出值
PR输出值定义:带给友情链接网站的PR值。
计算公式:(1 – 0.85) + 0.85 * (PR值 / 外链数)
这里把上面公式中的0.85就当成是1,则公式就可以简化为:PR输出值=PR值 / 外链数,从简化公式不难看出,当网站PR一定,外链数越多,则输出PR值则越小。
PR输出值的作用:即你链接上别人的网站,你网站就会分给对方0.29的PR值。 对本身网站的PR是没有影响的。 对别人的网站的PR值提升有一定的帮助,
discuz后台设置对seo的影响
1 首页文件名设置,统一首页URL
解决http://www.njava.com/和http://www.njava.com/index.php 对se权重的影响
全局>站点信息>首页文件名
设为论坛的主域名或主目录。
以njava.com为例,
网站URL是http://www.njava.com/,
那么这个首页文件名也设为http://www.njava.com/,默认是index.php
这样,站内到主页的链接和外部链接就一致了。
好处:
对于相同内容的两个页面,SE会选择一个权重高的做为首选,给予高的排名,显示在搜索结果中,而另一个排名很低或不收录。这一过程需要一定的时间判断。貌似这样也没有什么问题,但是,却分散了权重。
像上面的例子,http://www.njava.com/和http://www.njava.com/index.php 两个页面虽然是同一个内容,外链一般链接到主域名上,内链却链接到index.php文件上,虽然都有了很高的PR,但同样的内容,把链接分散到两个URL上,分散了权重,没有必要。
二 为了SEO,不要选择个人资料页面(space.php)静态化
1.个人资料页面都是雷同的东西。很少有人会写自我介绍,所以造成了大量内容相似的网页。
2.默认情况下是不允许游客访问个人资料页面的,所以会得到的提示信息页,discuz又没有对这类页面加上meta robots 禁止收录,这就产生很多相同内容的页面。
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 seo悄悄地在改变:上面的问题还是以观察收录结果是发现的,不过discuz7.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给redirect.php做301跳转
类似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" ); exit();
文件中共有四处,都修改完就可以访问论坛,检查下效果了
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禁止某个版帖子的收录
各种原因,需要禁止SE对discuz某个版面帖子的收录(如水版、或为了更好的SEO等)。当然如果设置了权限,不允许游浏览此版面,那么就肯定不能收录了。
1.使用robots.txt文件,禁止版块列表的收录
Disallow: /forum-1-
#数字即为要禁止版块的ID。
#注意数字最后的 – 不要省略,否则连ID为11,12等1开头的版都禁了
2.加meta robots标签,禁止收录某个版块帖子
修改viewthread.php文件,在$oldtopics = isset($_DCOOKIE[‘oldtopics’]) ? $_DCOOKIE[‘oldtopics’] : ‘D’; 上面加:
if( $thread['fid']==1 ){ $seohead .= '<meta name="robots" content="noindex,nofollow" />'; }
判断一下帖子是属于哪个版($thread[‘fid’])的,给它加上meta robots禁止。
第一点虽然禁止版块收录了,但有可能从动态形式或其它地方访问到帖子链接,所以还要用第二点给帖子页加上meta。这两点中的版块ID和要您禁止的版块对应,如果有多个版块,第一点中添加行就行了,第二点要修改断语句中中的逻辑表达式。
discuz论坛禁止无效页面的收录
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函数。
function showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0) { extract($GLOBALS, EXTR_SKIP); global $hookscriptmessage, $extrahead, $discuz_uid, $discuz_action, $debuginfo, $seccode, $seccodestatus, $fid, $tid, $charset, $show_message, $inajax, $_DCACHE, $advlist; define('CACHE_FORBIDDEN', TRUE); $hookscriptmessage = $show_message = $message;$messagehandle = 0;
在第四行 define(‘CACHE_FORBIDDEN’, TRUE); 后面加上:
$extrahead .='';
即是
function showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0) { extract($GLOBALS, EXTR_SKIP); global $hookscriptmessage, $extrahead, $discuz_uid, $discuz_action, $debuginfo, $seccode, $seccodestatus, $fid, $tid, $charset, $show_message, $inajax, $_DCACHE, $advlist; define('CACHE_FORBIDDEN', TRUE); $extrahead .='<meta name="robots" content="noindex,nofollow" />'; $hookscriptmessage = $show_message = $message;$messagehandle = 0;
discuz论坛的robots.txt文件设置
discuz论坛的robots.txt文件设置
User-agent: * Allow: /redirect.php Allow: /viewthread.php Allow: /forumdisplay.php Disallow: /? Disallow: /*.php
搜索引擎对robots.txt的支持情况
1. 对于allow 及 * $ 通佩符都支持,定义是一样的。
2.对于同一个User-agent 段内的 allow 和 disallow,匹配规则是不一样的。
google,baidu,sogou对于allow的优先级高,只要有allow允许,不管在段内什么位置,不管之前disallow设置如何,蜘蛛就会索引;
而live serch, yahoo对于allow和disallow的定义是平级的,按照从下到下的顺序只要匹配成功就退出。youdao未知
from:http://seo.banmutian.org/thread-2-1-1.html