Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

dz全面优化教程

[复制链接]
futoo 发表于 2011-8-28 11:31:03 | 显示全部楼层 |阅读模式
本帖最后由 futoo 于 2011-8-28 11:43 编辑

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

找到:

<title>$navtitle $bbname $seotitle - Powered by Discuz!</title>

去掉
- Powered by Discuz!

二。找到

<meta name="keywords" content="Discuz!,Board,Comsenz,forums,bulletin board,$seokeywords">

<meta name="description" content="$bbname $seodescription - Discuz! Board">

修改为:

<meta name="keywords" content="$navtitle,$seokeywords">

<meta name="description" content=" $navtitle $bbname $seodescription">

三。修改完善 archiver

打开archiver/include/header.inc.php

查找:

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

替换成:

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

四,找到:

<meta name="keywords" content="Discuz!,Board,Comsenz,forums,bulletin board,<?=$_DCACHE['settings']['seokeywords']?>">

<meta name="description" content="<?=$_DCACHE['settings']['bbname']?> <?=$_DCACHE['settings']['seodescription']?> - Discuz! Archiver">

修改为:

<meta name="keywords" content="<?=$navtitle?>,<?=$_DCACHE['settings']['seokeywords']?>">

<meta name="description" content="<?=$_DCACHE['settings']['bbname']?> <?=$_DCACHE['settings']['seodescription']?>">

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

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

六,禁止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 .= '<meta name="robots" content="noindex,nofollow" />';
}
判断一下帖子是属于哪个版($thread['fid'])的,给它加上meta robots禁止。

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

七,给帖子页viewthread.php和archiver页加canonical 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

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

为archiver页加link canonical标签

4.修改archiver/index.php:在global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav;行下加一行:global $extrahead;
在<meta http-equiv="Content-Type" content="text/html; charset={$charset}" />
行下加一行:$extrahead

5.修改archiver\include\thread.inc.php:此文件中有两个showheader();,在第二个的上面加一行:$extrahead .='<link rel="canonical" href="thread-' .$tid. '-1-1.html" />';

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

7.如果您是以动态URL形式为首先版本,上述相应位置应替换为如下语句:
$extrahead .='<link rel="canonical" href="viewthread.php?tid=' .$tid. '" />';

八。让redirect.php(最后发表等帖子形式) 301跳转到静态URL形式。

类似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" );

文件中共有四处,都修改完就可以访问论坛,检查下效果了

九,修改列表页forumdisplay.php,为帖子生成唯一的URL。

帖子页的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悄悄地在改变:上面的问题还是以观察收录结果是发现的,不过偶然看到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 title,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}-->

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


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

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

注: 本文内容收集自网络,适用版本好像7.0吧!dzx2.0不知道能不能适用,并没有测试!请优化前备份网站文件
taolixi 发表于 2011-8-28 11:31:17 | 显示全部楼层
哇 看晕了 记录下来。
回复

使用道具 举报

--CoffeE。 发表于 2011-8-31 00:14:46 | 显示全部楼层
适用于7.2 的。。。
回复

使用道具 举报

金域名人 发表于 2011-9-4 09:47:48 | 显示全部楼层
有没有X2的优化教程
回复

使用道具 举报

Janey_Xiong 发表于 2011-9-5 19:15:06 | 显示全部楼层
收藏了先
回复

使用道具 举报

afantisc 发表于 2011-9-5 19:21:32 | 显示全部楼层
不错,学习了,是个好东西啊
回复

使用道具 举报

woaigaoshan 发表于 2011-9-6 00:07:50 | 显示全部楼层
帖子很不错,我先顶一下
回复

使用道具 举报

hotview 发表于 2011-9-8 20:19:11 | 显示全部楼层
谁改一下 到x2啊
回复

使用道具 举报

一笑88 发表于 2011-9-8 20:30:21 | 显示全部楼层
先收藏了,等着慢慢用
回复

使用道具 举报

hao888 发表于 2011-9-8 21:14:57 | 显示全部楼层
文件位置都不一样了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-17 20:20 , Processed in 0.035918 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表