当前位置:首页 > SEO排名 > 正文

开启DZ文章SEO优化:如何提升内容曝光?怎样吸引搜索引擎?

Discuz文章页的SEO病灶在哪里

Discuz默认的帖子页模板在搜索引擎眼里是一团乱麻。URL参数冗余、结构化数据缺失、内容重复度高,这三个问题叠加,导致大量论坛内容被搜索引擎判定为低质量页面。我拆解过二十多个DZ站点的收录数据,发现一个规律:不做任何优化的站点,文章页收录率普遍低于15%,而经过系统调整的站点能把收录率拉到60%以上。

开启DZ文章SEO优化:如何提升内容曝光?怎样吸引搜索引擎?

先明确一个认知:搜索引擎抓取DZ帖子页时,最头疼的不是内容本身,而是同一篇帖子能通过多个URL访问。portal.php?mod=view&aid=123、article-123-1.html、甚至带了一堆参数的动态链接,这些URL指向的是完全相同的页面。搜索引擎会把这当作重复内容处理,权重被分散,收录效率直线下降。

URL规范化是第一步,也是最容易被跳过的

很多人上来就改meta标签、堆关键词,但URL结构没理顺,后面做的都是空中楼阁。DZ后台自带的伪静态功能只是基础,你需要做的是强制唯一URL。

具体操作分三步:

  1. 在后台全局→SEO设置中开启URL伪静态,选择最短的伪静态规则
  2. 修改source/module/portal/portal_view.php,在文章页加载前插入301跳转逻辑,把所有非标准URL统一跳转到article-{aid}-1.html这个格式
  3. 在模板header_common.htm中,给文章页加上canonical标签,明确告诉搜索引擎哪个URL是主版本

canonical标签的代码很简单,放在head区域:

<link rel="canonical" href="https://你的域名/article-{$aid}-1.html" />

这一步做完,用site命令查一下收录,通常2-4周内会看到重复页面数量明显下降,有效收录开始爬升。

标题标签的结构决定了点击率上限

DZ默认的文章页标题格式是"文章标题 - 栏目名称 - 站点名称",这个结构在搜索结果里显示时,前半部分经常被截断。用户在搜索结果页看到的是"... - 栏目名 - 站名",根本不知道文章在讲什么。

我测试过三种标题结构的数据对比:

标题结构平均点击率跳出率
文章标题 - 站点名(默认)2.1%78%
文章标题 - 栏目名 - 站点名1.8%82%
文章标题_关键词后缀 - 站点名3.7%65%

第三种结构把栏目名替换成了跟内容直接相关的关键词后缀,点击率提升了将近一倍。实现方式是在portal_view.php里修改标题拼接逻辑,从文章的自定义字段读取关键词后缀,没有设置的话回退到栏目名。

开启DZ文章SEO优化:如何提升内容曝光?怎样吸引搜索引擎?

修改位置在source/module/portal/portal_view.php大约第180行附近,找到标题赋值语句,改成:

$seotitle = $article['title'].($article['seokeyword'] ? '_'.$article['seokeyword'] : '_'.$cat['catname']).' - '.$_G['setting']['sitename'];

同时在后台文章编辑页增加一个seokeyword自定义字段,让发布者可以手动填写。

内容正文的语义化处理

搜索引擎对文章正文的抓取不是简单的全文收录,它会提取段落结构、标题层级、列表元素来判断内容质量。DZ编辑器生成的HTML通常是扁平的,大量br标签换行,没有h2/h3层级,没有列表包裹。

这个问题要从两个层面解决。第一层是发布规范,要求编辑使用h2作为段落小标题,用ul/ol包裹列表项,用blockquote标记引用内容。第二层是程序层面,在portal_view.php输出内容前,用正则对正文做一次结构化清洗。

清洗逻辑的核心代码思路:

  1. 把连续两个br标签之间的短文本(15字以内且以冒号结尾)自动包裹h3标签
  2. 把以数字序号或短横线开头的连续三行以上内容自动包裹ol或ul标签
  3. 给正文中的表格自动添加thead和tbody分层

这个处理在模板渲染之前完成,不影响编辑器里的原始内容,编辑可以继续用熟悉的方式发帖。

结构化数据标记是流量放大器

搜索结果里的星级评分、面包屑导航、发布日期这些富文本展示,全部来自结构化数据。DZ默认模板完全不输出任何结构化标记,这在搜索结果里等于放弃了20%以上的视觉面积。

针对文章页,需要添加三种结构化数据类型:Article、BreadcrumbList、Organization。实现方式是在模板文件里直接嵌入JSON-LD格式的标记,不需要改动程序逻辑。

在portal_view.htm模板的head区域加入Article结构化数据:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "{$article['title']}",
  "datePublished": "{$article['dateline']}",
  "dateModified": "{$article['lastmodify']}",
  "author": {
    "@type": "Person",
    "name": "{$article['author']}"
  },
  "publisher": {
    "@type": "Organization",
    "name": "{$_G['setting']['sitename']}",
    "logo": {
      "@type": "ImageObject",
      "url": "https://你的域名/logo.png"
    }
  }
}
</script>

BreadcrumbList标记放在文章页顶部面包屑位置,用JSON-LD格式输出当前页面在站点结构中的路径。这两个标记部署后,用Google的富结果测试工具验证通过即可。

实际效果方面,我经手的一个技术论坛在添加结构化数据后,搜索结果的展示点击率从2.3%提升到4.1%,增幅接近80%。这个提升不需要任何排名变化,纯粹是展示样式的优化带来的。

内链策略要围绕实体词构建

DZ站点的内链通常依赖相关文章插件,但这些插件大多基于标签或栏目匹配,生成的链接相关性参差不齐。搜索引擎现在评估内链质量时,更看重链接上下文与目标页面的主题一致性。

我的做法是建立一个实体词库,把站点核心领域的专业术语、产品名、人名整理成列表,然后在文章正文输出时,对这些实体词自动添加指向对应专题页或搜索结果的链接。这个逻辑写在portal_view.php的内容输出过滤函数里。

关键参数设置:

  • 每篇文章自动内链数量上限设为5个,超过会触发过度优化判定
  • 同一个实体词只在首次出现时添加链接
  • 链接的锚文本必须完全匹配实体词,不添加额外修饰
  • 目标URL优先指向站内专题页,没有专题页则指向该实体词的站内搜索结果

这个策略执行三个月后,站内专题页的搜索流量平均增长40%,因为搜索引擎通过这些内链关系更准确地理解了站点的主题结构。

页面加载速度对收录的直接影响

搜索引擎分配给每个站点的抓取预算是有限的。DZ文章页如果加载时间超过3秒,抓取效率会大幅下降,很多页面根本等不到被完整渲染就被跳过了。

排查DZ文章页加载慢的问题,通常集中在三个点:

  1. 头像和附件图片没有做懒加载,首屏加载了大量不可见图片
  2. 每次页面请求都实时查询数据库生成相关文章列表,没有缓存
  3. 第三方统计代码和社交分享组件阻塞了页面渲染

第一个问题在模板里给图片标签加上loading="lazy"属性就能解决大部分,低版本浏览器用一段简单的Intersection Observer polyfill兜底。第二个问题需要把相关文章查询结果写入文件缓存,设置过期时间为1小时,避免每次请求都查库。第三个问题把统计代码改用async异步加载,社交分享组件延迟到页面加载完成后再初始化。

这三个调整做完,文章页的LCP(最大内容绘制)时间通常能从4-5秒降到1.5秒以内。这个指标改善后,搜索控制台里的抓取频率数据会在两周内出现明显上升。

移动端适配不只是响应式

搜索引擎现在以移动版页面作为索引基准,DZ默认模板在移动端的表现只能说勉强可用。字体大小不一致、点击目标间距过小、横向滚动这些移动端易用性问题,都会被搜索引擎纳入页面体验评分。

检查移动端问题最直接的方式是看Search Console的移动可用性报告,它会列出具体的错误类型和受影响的URL数量。常见的修复项包括:

  • 把viewport的initial-scale设为1.0,禁止用户缩放
  • 所有可点击元素的尺寸不小于48x48px
  • 正文字体大小不低于16px,行高不低于1.5
  • 取消任何需要横向滚动的元素

这些修改在模板的CSS文件里就能完成,不需要动程序逻辑。修改后用Google的移动设备适合性测试工具逐页验证,确保所有文章页都能通过。

抓取预算的分配优化

大型DZ站点动辄几十万篇文章,搜索引擎不可能全部频繁抓取。哪些页面被优先抓取、抓取频率多高,取决于站点在搜索引擎眼中的权重分配。

操作层面的优化手段有两个:一是通过robots.txt明确禁止抓取低价值页面(用户中心、站内信、收藏页、打印页等),把抓取预算集中到文章页和栏目页;二是维护一个高质量的XML sitemap,只包含文章详情页和栏目页,不包含标签页和搜索页。

sitemap的生成逻辑要注意几个细节:

  1. 只收录最近两年内发布或有更新的文章,旧文章不纳入
  2. 每个sitemap文件不超过50000条URL,超出则分文件
  3. lastmod字段使用文章最后修改时间,不是发布时间
  4. priority字段:文章页设为0.8,栏目页设为0.6,首页设为1.0

sitemap提交到Search Console后,观察抓取统计里的"已抓取但未编入索引"比例,这个数字如果超过30%,说明内容质量或重复度有问题,需要回头检查前面的URL规范化和内容去重工作。

最新文章