找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6|回复: 0

[维护日志] [2026-05-20] [SEO] 全站 Canonical 与 Description 重复问题综合修复

[复制链接]
  • 打卡等级:本地老炮

9336

威望

7221

金钱

1万

贡献

管理员

自由的灵魂

积分
107184
主题
5609
回帖
26654
注册时间
2003-4-10
最后登录
2026-9-9
发表于 2026-5-20 18:43:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、问题缘起

在完成帖子页 canonical 优化和全站版块 SEO 标题、关键词、描述设置后,站长在 Bing Webmaster Tools 中发现以下 SEO 警告仍然存在:

问题涉及页面错误数量
Too many pages with identical meta descriptions版块列表页分页、分类筛选页12.8K
首页与 /forum.php 重复//forum.php少量


根本原因
  • 版块列表页第2页及之后的 description 与第1页完全相同
  • 不同分类筛选页(typeid)使用相同的版块级 description
  • //forum.php 返回相同内容但无 canonical 合并




二、解决方案

2.1 版块列表页 Canonical(仅第1页输出)

文件/source/module/forum/forum_forumdisplay.php

位置get_seosetting 函数调用之后,$rsshead 定义之前

新增代码

  1. // 版块列表页 canonical:仅第1页输出,其他分页不输出
  2. if($_G['page'] == 1) {
  3.     if(is_array($_G['setting']['rewritestatus']) && in_array('forum_forumdisplay', $_G['setting']['rewritestatus'])) {
  4.         $canonical_url = rewriteoutput('forum_forumdisplay', 1, '', $_G['fid'], 1, '', '');
  5.     } else {
  6.         $canonical_url = 'forum.php?mod=forumdisplay&fid='.$_G['fid'];
  7.     }
  8.     $_G['setting']['seohead'] .= '<link href="'.$_G['siteurl'].$canonical_url.'" rel="canonical" />'."\n";
  9. }
复制代码


2.2 版块列表页 Description 防重复

分页页码标识(同一文件中):

  1. // 第2页及之后,在 description 前加上页码标识,避免与第1页重复
  2. if($_G['page'] > 1) {
  3.     $metadescription = '第'.$_G['page'].'页 - '.$metadescription;
  4. }
复制代码


分类筛选前缀(同一文件中):

  1. // 如果存在 typeid(分类筛选),将分类名称添加到描述开头
  2. $typeid = !empty($_GET['typeid']) ? intval($_GET['typeid']) : 0;
  3. if($typeid && !empty($_G['forum']['threadtypes']['types'][$typeid])) {
  4.     $type_name = $_G['forum']['threadtypes']['types'][$typeid];
  5.     if(!empty($metadescription)) {
  6.         $metadescription = $type_name . ' - ' . $metadescription;
  7.     }
  8. }
复制代码


2.3 论坛首页 Canonical

文件/source/module/forum/forum_index.php

位置:文件开头,require_once 之前

新增代码

  1. // 论坛首页 canonical:将 /forum.php 的权重合并到 /
  2. if(empty($_GET)) {
  3.     $_G['setting']['seohead'] .= '<link href="https://www.dianbo.org/" rel="canonical" />'."\n";
  4. }
复制代码





三、效果汇总

页面类型Canonical 策略Description 格式
版块第1页输出,指向自身版块描述
版块第2页及之后不输出第X页 - 版块描述
分类筛选页(typeid)不输出(依赖版块 canonical)分类名 - 版块描述
论坛首页 /forum.php输出,指向 /正常
论坛根域名 /无 canonical正常
帖子页(已完成)仅第1页输出第2页+加页码


执行顺序(以版块列表页为例):

  1. 基础描述(后台设置)
  2.     ↓
  3. 添加分类前缀(如有 typeid)
  4.     ↓
  5. 添加页码标识(如 page > 1)
  6.     ↓
  7. 输出到 `$_G['setting']['seohead']`
  8.     ↓
  9. `header_common.htm` 自动输出到 `<head>`
复制代码





四、关键踩坑记录

问题原因解决方案
代码修改后页面无变化浏览器缓存(缓存的图像和文件)Ctrl+Shift+Delete → 清除“缓存的图像和文件”
首页 canonical 不生效/forum.phpforum_index.php 处理,不是 forum_forumdisplay.php确认正确的文件后再添加代码
出现重复 canonical 标签header_common.htmforum_index.php 同时添加只保留一处(推荐 forum_index.php


重要提醒:Discuz! 后台“缓存更新”只能清除论坛自身的缓存,无法清除浏览器缓存。修改代码后页面无变化,首先确认不是浏览器缓存问题。




五、验证方法

测试 URL预期结果
https://www.dianbo.org/forum.php源代码中存在 <link href="https://www.dianbo.org/" rel="canonical" />
https://www.dianbo.org/forum-48-1.html存在 canonical 指向自身
https://www.dianbo.org/forum-48-2.html无 canonical,description 以“第2页 - ”开头
https://www.dianbo.org/forum.php?mod=forumdisplay&fid=48&typeid=46description 以“欧美电影 - ”开头





六、技术沉淀

  • 分页 Canonical 策略:仅第1页输出 canonical 指向自身,后续页不输出。既避免重复内容,又保留分页被收录的可能。
  • Description 防重复:通过动态添加“第X页 - ”和“分类名 - ”前缀,确保每个页面的 description 唯一。
  • SEO 逻辑集中:所有 canonical 和 description 生成逻辑应在各模块的 PHP 文件中处理(forum_index.phpforum_forumdisplay.phpforum_viewthread.php),通过 $_G['setting']['seohead'] 输出,保持架构一致。
  • 代码修改验证流程
    • 修改 PHP/模板文件
    • 清理论坛缓存(后台 → 缓存更新)
    • 重启 PHP 服务(可选,清空 OPcache)
    • 清除浏览器缓存(缓存的图像和文件) ← 最易忽略
    • 强制刷新(Ctrl+Shift+R)查看源代码




日志时间:2026-05-20
关联分支:env-base
下一步:观察 Bing SEO 报告中相关警告数量下降情况(预计 2-4 周)
不懂就搜!点此搜点拨论坛。如果本坛没有,请尝试点此问AI,或跟帖提问。
发帖前注意看置顶帖
不定期借助AI对点拨论坛陈年老帖进行挖坟回复,打扰勿怪!
在已经有人回复时,不要在顶楼添加新问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2026-9-9 20:50 , Processed in 0.041680 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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