News新闻

业界新闻动态、技术前沿
Who are we?

您的位置:首页      网站知识      discuz程序SEO指南

discuz程序SEO指南

发布日期:2014-02-18 00:00:00 956

这是光年论坛管理员国平针对光年论坛写的一篇Discuz论坛SEO优化指南,非常实用的一篇文章。

光年论坛相关资料

  • 双线IP并做了智能DNS解析:202.91.246.211(电信)、202.91.234.147(网通)
  • 操作系统:Linux
  • WEB服务器:Apache/2.2.18 (Unix) mod_ssl/2.2.18 OpenSSL/0.9.8e-fips-rhel5 PHP/5.2.17
  • 论坛程序:Discuz X1.5

Discuz论坛SEO优化指南

国平对网页性能做了优化,根据搜索引擎爬虫程序从发起一个请求到返回数据,中间需要经过的途径,然后优化这些相关因素即可。大致以下几个方面:

  1. DNS
  2. 服务器网络环境
  3. 服务器硬件和系统
  4. 网站程序或CMS
  5. 前端代码

关于DNS、网络环境、硬件和系统,大家在文章底部的原文链接中详细了解,这里暂不介绍,主要看下网站程序优化和前端代码优化(Discuz! X1.5),下面看下具体SEO指南。

1、Discuz前端速度优化

加快前端的速度,光年论坛启用了论坛自带的gzip压缩。Discuz! x1.5后台现在还没有启用gzip压缩功能的地方,需要手动设置:

打开 /config/config_global.php 文件,把

$_config['output']['gzip'] = ’0′;

修改为

$_config['output']['gzip'] = ’1′;

即可启用gzip压缩。

Discuz!x1.5后台还可以做一些速度上的优化如启用memcache等等,这个相对麻烦点,大家可以自己尝试。

2、Discuz 静态化URL

Discuz! x1.5后台自带了一个静态化URL的功能,而且默认也写好了静态化的规则。但是这里有一个问题,就是帖子页面的静态化规则没有写好。

如默认的帖子页面规则是:

thread-{tid}-{page}-{prevpage}.html

即规则为:

thread-{帖子ID}-{帖子翻页ID}-{当前帖子所在的列表页ID}.html

问题就出在“当前帖子所在的列表页ID”这里,因为在论坛板块中,当一个帖子是最新发表或最新回复的时候,“当前帖子所在的列表页”是第一页,url中的数字是 “1”。当这个帖子很久没人回复沉下去的时候,“当前帖子所在的列表页”就不知道是几了,可能出现在第二页,也可能在第十页。这样,每个帖子的url经常在变化。会产生很多的重复页面,而且url经常变化,当前帖子积累的权重会丢失。

为了解决这个问题,可以重写url静态化规则。当然修改页面代码也能解决这个问题,但是不方便维护,因为修改后的文件以后可能会被升级文件覆盖,而且会丢失部分功能。

论坛用的是linux+apache,而且论坛是作为一个虚拟主机放在服务器上。 Url静态化的过程就这么操作:

新建一个文本文件,文件名为“.htaccess”,然后用 UltraEdit 编辑这个文件,写入的规则为:

# 将 RewriteEngine 模式打开

RewriteEngine On

# 修改以下语句中的RewriteBase 后的地址为你的论坛目录地址,如果程序放在根目录中,为 /,如果是相对论坛根目录是其他目录则写为 /{目录名},如:在bbs 目录下,则写为 /bbs

RewriteBase /

# Rewrite 系统规则请勿修改

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^thread-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1

RewriteCond %{QUERY_STRING} ^(.*)$

RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2&%1

用 UltraEdit 写好规则后,按F12,在文件另存为的窗口上,有个“格式”选项,选“utf-8 -无BOM “保存。然后把“.htaccess”上传到论坛根目录。

然后在进入后台 –> 全局–>优化设置–>搜索引擎优化 。 其他保持不变,就把“主题内容页”规则改为:

thread-{tid}-{page}.html

discuz程序主题内容页规则修改图示

discuz程序主题内容页规则修改图示

保存设置再更新一下缓存就可以了。

3、Discuz解决重复URL的问题和屏蔽垃圾页面

Discuz! X1.5 还是不可避免的出现重复url的问题,这些重复的url即浪费了爬虫大量的时间,又使网站的原创性受到损害。所以一定要屏蔽很多重复页面。

另外还要消除一些垃圾页面,所谓垃圾页面就是一些没什么SEO价值的页面,也帮助爬虫节约时间。

解决这个问题,最好是用robots.txt文件来解决。因为里面的规则是最强势的,所有爬虫第一次访问一个域名,第一个动作都是下载这个robots.txt文件并读取里面的规则。 其他一些nofollow和rel=canonical等标签适当的时候再用。

虽然Discuz默认写了一些robots规则,但是还是不够理想。

根据从首页的代码中发现的问题,需要在robots.txt里增加的规则有:

Disallow: /search-search-adv-yes.html

Disallow: /space-username-*

Disallow: /forum.php?gid=

Disallow: /home.php?mod=space&username=

Disallow: /forum.php?showoldetails=

Disallow: /home-space-do-friend-view-online-type-member.html

Disallow: /space-uid-*

根据在板块帖子列表页面发现的问题,需要在robots.txt里增加的规则有:

Disallow: /search.php$

Disallow: /forum-forumdisplay-fid-*

根据在帖子详细信息页面看到的问题,需要在robots.txt里增加的规则有:

Disallow: /forum-viewthread-tid-*-extra-page%3D.html$

Disallow: /forum.php?mod=viewthread&tid=

Disallow: /forum-viewthread-tid-*-page-*-authorid-*.html

Disallow: /forum-viewthread-tid-*-extra-page%3D-ordertype-*.html

Disallow: /forum-viewthread-action-printable-tid-*.html

Disallow: /home-space-uid-*

至于为什么要写这些规则,大家可以自行到源代码里查看为什么。

robots.txt写到这里并不是结束,还有两件事情要做。

  1. 因为robots.txt和nofollow是不同的意思,所以robots.txt并不能代替nofollow。以上这些需要屏蔽的地方还需要用nofollow标注一下。 不过因为要改的源码太多,暂时先不动。需要用nofollow,还有一个原因是某些搜索引擎并不遵守自己所定下的robots规则。
  2. 因为只看过论坛中的三类主要页面,还有很多页面没查看过,难免会有漏掉的地方,所以需要以后经常到日志中查看爬虫的轨迹,看看爬虫还有哪些抓取问题。

4、Discuz程序修改网页的头部信息

Discuz x 1.5 的<head>部分有一些信息是我们不想要的,所以需要修改。

打开 \template\default\common\header_common.htm 。

找到 <title> 部分, 去掉  Powered by Discuz!   以及最后一个中划线“-”。

然后删除 <meta name=”keywords” 这一行。 因为keywords已对SEO没有任何用处,所以去掉也没什么。

其他的一些选项如 : <meta name=”generator”  和  <meta name=”author” 等等按理可以去掉,但是很多开源系统存在很多年了,搜索引擎能适当的判断出来一个网站用的是什么CMS,所以暂时保留。因为Discuz 在SEO方面还是存在其他一些不合理性的,让搜索引擎知道这个网站是用Discuz做的会有好处。

5、修正Discuz程序本身的一些静态化错误

Discuz x 1.5  升级到 11.25 补丁后,因为系统默认的首页都是 forum.php,即使访问index.php也会301重定向到 forum.php 。可以在模板设置里把这个forum.php的文件名改成其他文件名或暂时不动。

还有一个问题,就是“主题内容页面”(详细帖子页)的静态化规则,很多规则都和版块列表页面的URL都不统一。

如:帖子的翻页地址从第二页起都为:

forum-viewthread-tid-220-extra-page%3D-page-2.html

这样的形式,但是实际上URL应该为:

/thread-220-2.html

这样的形式。

还有就是在面包屑中,论坛版块的URL为:

/forum-forumdisplay-fid-45-page.html

这样的形式,而实际应该为:

/forum-45-1.html

如下图:

Discuz程序主题内容页面静态化规则和版块列表页面的URL都不统一

所以打开 /source/module/forum/forum_viewthread.php,找到第108行:

if(!empty($_G['gp_extra']))

在上面加一行:

$_G['gp_extra'] = !empty($_G['gp_extra']) ? rawurlencode($_G['gp_extra']) : ”;

6、修改Discuz程序配置 让搜索引擎收录图片

图片SEO过来的流量也会不少的,但是Discuz x 1.5默认的设置是游客无法看到图片的。也就意味着搜索引擎也收录不了帖子中的图片。

打开 后台 – 用户 – 用户组 – 系统用户组 – 游客 -  编辑 – 附件相关,在“允许下载/查看附件”上选“是”。

但是如果光这样设置了,那游客也可以下载其他附件了。  所以在 后台 – 全局 – 积分设置 – 积分策略 里,把下载附件设置需要1个金币就是。这样下载其他附件还是需要注册成为会员的。

Discuz程序SEO指南原文结束。

原文地址:http://www.gnbase.com/thread-116-1.html

今天一位朋友让我帮忙分析下站内,她的网站也是用Discuz程序做的,与上面光年论坛的一些资料不一样,她的服务器和程序相关信息为:

  • Windows Server 2003
  • WEB服务器     Microsoft-IIS/6.0
  • Discuz程序版本是X2

其他信息目前还不清楚,该网站站内需要改善的还有很多。但上面这篇的Discuz x 1.5程序SEO指南很多可以参考,另外这位朋友的网站不仅仅是论坛模块,还包含门户、家园、群组等板块,上面指南中是根据光年论坛来写的,所以一些程序上的优化还需要根据网站的实际情况来进行,另外一些修改建议我是直接拿过来的,在实际运用中还需要针对性检查,以便造成不必要的失误。