DISCUZ 7.0 详解优化 X2 BUG问题

一, 修改论坛风格的temlpates/风格/hearder.htm(这里是指你所用的风格的,如果你有20个风格,最好改20次)

找到:

$navtitle $bbname $seotitle - Powered by Discuz!

去掉
- Powered by Discuz!

二。找到





修改为:





三。 修改完善 archiver

打开archiver/include/header.inc.php

查找:

<?=$_DCACHE['settings']['seotitle']?> <?=$navtitle?> <?=$_DCACHE['settings']['bbname']?> - powered by Discuz! Archiver

替换成:

<?=$_DCACHE['settings']['seotitle']?> <?=$navtitle?> <?=$_DCACHE['settings']['bbname']?> -   Archiver

四, 找到:





修改为:





五, 给无效页面加meta robots标签禁止收录
#修改提示信息页面,解决重复内容问题
找到全局函数定义文件:global.func.php修改其它中的showmessage函数就可以了。
在第四行 define('CACHE_FORBIDDEN', TRUE); 后面加上:
$extrahead .='';
如此修改之后,对于无权访问的URL、已删除的帖子等提示信息页面,都会返回带有meta robots禁止在页头。因为禁止收录了,过一段时间也会从 索引中删除。这样,给SE的都是一些有内容的网页,对于提高权重会有好处。

archiver页面的帖子,如果删除了,同样的提示信息也要禁止收录。
修改archiver\include\thread.inc.php:此文件中有两个showheader();,在第一个的上面加一行:$extrahead .='';就可以了。

六, 禁止SE收录某个版的帖子的方法
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 .= '';
}
判断一下帖子是属于哪个版($thread['fid'])的,给它加上meta robots禁止。

第一点虽然禁止版块收录了,但有可能从动态形式或其它地方访问到帖子链接,所以还要用第二点给帖子页加上meta。这两点中的版块ID和要您禁止的版块对应,如果有多个版块,第一点中添加行就行了,第二点要修改断语句中中的逻辑表达式。

七, 给帖子页viewthread.php和archiver页加canonical URL声明静态地址为首选版本

1.给viewthread.php加canonical URL标签,指定帖子的静态地址为首选版本。
修改viewthread.php文件,在$page = max($page, 1);上面(程序调用包含文件结束),加一行$extrahead .='';
2.给打印页加canonical tag
虽然打印页viewthread.php?action=printable.....也是调过这个程序生成数据,但用了不同的模板,要把 变量$extrahead 加进去,修改tmplates\default\viewthread_printable.htm
在部分的下面加一行: $extrahead <br> <br> 3.给forumdisplay.php加canonical tag <br> 在include template('forumdisplay');上加一行: <br> $extrahead .='<link rel="canonical" href="forum-' .$fid. '-' .$page. '.html" />'; <br> <br> 为archiver页加link canonical标签 <br> <br> 4.修改archiver/index.php:在global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav;行下加一行:global $extrahead; <br> 在<meta http-equiv="Content-Type" content="text/html; charset={$charset}" /> <br> 行下加一行:$extrahead <br> <br> 5.修改archiver\include\thread.inc.php:此文件中有两个showheader();,在第二个的上面加一行:$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />'; <br> <br> 6.将archiver内容页最下的“本看完整版本”链接改为静态形式 <br> 修改archiver/include/thread.inc.php,将 "viewthread.php?tid=$tid"替换为"thread-{$tid}-1-1.html" <br> <br> 7.如果您是以动态URL形式为首先版本,上述相应位置应替换为如下语句: <br> $extrahead .='<link rel="canonical" href="viewthread.php?tid=' .$tid. '" />'; <br> <br> 八。 <span style="color:#0000FF;">让redirect.php(最后发表等帖子形式) 301跳转到静态URL形式。<br><br></span>类似redirect.php?tid=7&goto=lastpost这种形式URL的页面的子内容和thread-1-1-1.html一样的,但URL形式不一样,SE会当成重复内容。 <br> 这种URL形式会出现在主页、版块列表页的最后发表或最后回复位置,discuz7以前版本的上一主题、下一主题等也是此种形式的URL,现在虽然没有,但在代码中还能找到那些参数。 <br> <br> 为什么不禁止这种URL形式的索引? <br> 1.主要是不能控制别人链接到这种形式,如果禁止索引这种形式的URL就浪费了链接,所以要做301跳转,把链接和权重转移到标准的静态形式。 <br> 2.链接形式出现在首页,不禁止或许可以加快录 <br> <br> 给redirct.php做301跳转 <br> 有的情况下程序要查找才能得到要显示的tid,所以只能修改程序,用php代码实现301跳转。 <br> 打开 redirect.php 文件,将 require_once DISCUZ_ROOT.'./viewthread.php'; 替换为 <br> header("HTTP/1.1 301 Moved Permanently"); <br> header( "Location: thread-{$tid}-1-1.html" ); <br> <br> 文件中共有四处,都修改完就可以访问论坛,检查下效果了 <br> <br> 九, <span style="color:#0000FF;">修改列表页forumdisplay.php,为帖子生成唯一的URL。<br></span> <br> 帖子页的URL形式有很多,我们可以通过修改viewthread.php和archive给内容页上canonical URL,都指向静态URL形式来集中权重。 <br> <br> 但是,这个 伪静态地址也不是唯一的:thread-{tid}-{page}-(forumpage).html, 由内容页URL组成可见最后一段数字是代表帖子在这个版块列表的第几页,当新帖子不断增加,老帖会被挤到第二页,第三页...这样它的URL就会不断地变化。 <br> <br> 解决方法:修改forumdisplay.php <br> 将$extra = rawurlencode("page=$page$forumdisplayadd"); <br> 改为$extra = rawurlencode("page=1$forumdisplayadd"); <br> 这样,最后一段固定为1,但有个缺点,用户从这个帖子只能返回列表页的第一页了。 <br> <br> discuz seo悄悄地在改变:上面的问题还是以观察收录结果是发现的,不过偶然看到7.0的global.func.php文件,发现对帖子页进行静态化地址替换的函数有所变化 <br> function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') { <br>     return '<a href="thread-'.$tid.'-'.($page ? $page : 1).'-' <br>     .($prevpage && !IS_ROBOT ? $prevpage : 1).'.html"'.stripslashes($extra).'>'; } <br> 也就是说,现在discuz会针对 搜索引擎,把最后一段固定生成为1来解决这个问题。虽然是针对用户和搜索引擎分别处理,但内容都是一样的,并没有欺骗,应该还是没问题的。 <br> 另外,在伪静态替换中发现对robots进行了特殊处理,说明动态地址没有处理这个问题。 <br> <br> <br> <br> <strong>十。<span style="color:#0000FF;">discuz title,meta 标签优化</span><br> #先看看discuz的默认设置</strong>: <br> <ul class="litype_1"> <li><br><br><br></li> <li> <div class="quote"> <blockquote> <ul class="litype_1"> <li><br><br><br></li> <li><title>$navtitle $bbname $seotitle - Powered by Discuz!


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

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

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

       
       

       
       

       
       

    十一。 修改header.htm模板,去除logo的H2标签


    十二。seo 慎用“个人资料页面(space.php)静态化”
    一般情况下, 为了SEO,不要选择个人资料页面(space.php)静态化。如果想打发时间,或喜欢刨根问底,请看下面是解释。

    1.个人资料页面都是雷同的东西。很少有人会写自我介绍,所以造成了大量内容相似的网页。
    2.默认情况下是不允许游客访问个人资料页面的,所以会得到的提示信息页,discuz又没有对这类页面加上meta robots 禁止收录,这就产生很多相同内容的页面。
    所以,不要选择静态化,dz的robots.txt是默认也会禁止动态形式。当然SE经过一段时间判断,会处理此类问题。对于一个新站,去掉这些无用的页面,会让SE更快地建立权重。

    注: 本文内容收集自网络,适用版本好像7.0吧!dzx2.0不知道能不能适用,并没有测试!请优化前备份网站文件

    你可能感兴趣的:(DISCUZ 7.0 详解优化 X2 BUG问题)