找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 65|回复: 0

[维护日志] [2026-09-14] [优化] [伪静态改造] - 站内动态链接全面伪静态化(电脑版+手机版)

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

9337

威望

7448

金钱

1万

贡献

管理员

自由的灵魂

积分
107434
主题
5630
回帖
26661
注册时间
2003-4-10
最后登录
2026-10-2
发表于 2026-9-14 21:55:38 | 显示全部楼层 |阅读模式

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

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

×

1、问题缘起

论坛已启用伪静态规则,但站内仍大量存在 forum.php?mod=viewthread&tid=xxx 形式的动态链接,导致:

问题说明
内容重复同一帖子可通过动态和静态两个 URL 访问
权重分散搜索引擎无法确定哪个是权威版本
爬取配额浪费爬虫需要同时处理两套 URL
canonical 治标不治本canonical 只影响索引,不阻止爬取


探讨中发现的核心疑问:
  • 现代搜索引擎能否智能处理动态链接?
  • 为什么淘帖页未改模板却已是伪静态?
  • 模板中应该用 $thread[url] 还是硬编码静态地址?
  • 手机版是否需要单独处理?
  • 帖子详情页的「复制链接」如何伪静态化?




2、解决方案

(1)简要技术分析:
在模板层将所有指向帖子内容页的动态链接硬编码替换为伪静态格式,并在数据源层修复首页四格的 URL 生成逻辑。电脑版和手机版分别处理。

(2)修改文件列表:

电脑版:

操作文件路径
修改/template/default/forum/discuz.htm
修改/template/default/forum/forumdisplay_list.htm
修改/template/default/forum/ajax_threadlist.htm
修改/template/default/forum/guide_list_row.htm
修改/template/default/forum/guide.htm
修改/template/default/forum/viewthread.htm
修改/template/default/forum/recommend.htm
修改/template/default/tag/tagitem.htm
修改/template/default/ranklist/ranklist.htm
修改/template/default/common/block_thread.htm
修改/source/module/forum/forum_index.php(首页四格数据源)


手机版:

操作文件路径
修改/template/default/touch/forum/discuz.htm
修改/template/default/touch/forum/forumdisplay.htm
修改/template/default/touch/forum/guide_list_row.htm


(3)关键代码段:

模板层替换规律(所有模板通用):

将:
  1. href="forum.php?mod=viewthread&tid=$thread[tid]&extra=$extra"
复制代码

改为:
  1. href="thread-{$thread[tid]}-1-1.html"
复制代码


带单引号的变量则用:
  1. href="thread-{$thread['tid']}-1-1.html"
复制代码


首页四格数据源(forum_index.php):

将:
  1. 'url' => 'forum.php?mod=viewthread&tid='.$ithread['tid'],
复制代码

改为:
  1. 'url' => 'thread-'.$ithread['tid'].'-1-1.html',
复制代码


「复制链接」伪静态化(viewthread.htm 第 222 行):

将:
  1. <a href="forum.php?mod=viewthread&tid=$_G[tid]$fromuid" onclick="return copyThreadUrl(this, '$_G[setting][bbname]')" {if $fromuid}title="{lang share_url_copy_comment}"{/if}>[{lang share_url_copy}]</a>
复制代码

改为:
  1. <a href="thread-{$_G[tid]}-1-1.html" onclick="return copyThreadUrl(this, '$_G[setting][bbname]')" {if $fromuid}title="{lang share_url_copy_comment}"{/if}>[{lang share_url_copy}]</a>
复制代码


关于 $fromuid 的取舍:

原代码中的 $fromuid 是访问推广参数(&fromuid=123)。伪静态化时有两种选择:

方案写法效果
保留推广参数thread-{$_G[tid]}-1-1.html?fromuid={$_G[uid]}保留推广积分,但可能被恶意刷分
去掉推广参数thread-{$_G[tid]}-1-1.html无推广参数,防止刷分


最终采用去掉 $fromuid 的方案,理由:
  • fromuid 容易被恶意刷分(批量点击推广链接获取积分)
  • 推广带来的收益 < 被刷分的风险
  • 复制出的链接更简洁




3、最终实现效果

电脑版:

页面改造前改造后
论坛首页动态链接✅ 伪静态
版块列表动态链接✅ 伪静态
AJAX 翻页动态链接✅ 伪静态
导读页动态链接✅ 伪静态
面包屑导航动态链接✅ 伪静态
推荐主题动态链接✅ 伪静态
TAG 聚合页动态链接✅ 伪静态
排行榜动态链接✅ 伪静态
首页四格幻灯片动态链接✅ 伪静态
复制链接动态链接✅ 伪静态


手机版:

页面改造前改造后
手机版首页动态链接✅ 伪静态
手机版版块列表动态链接✅ 伪静态
手机版导读列表动态链接✅ 伪静态


未处理项及原因:

项目原因
淘帖页(电脑版+手机版)Discuz! 原生对游客输出伪静态
用户空间游客不可访问
搜索结果搜索引擎不索引
商品交易页特殊页面,无法用标准伪静态
帖子页分页携带筛选参数,伪静态无法完整承载
管理页面不参与 SEO
排行榜子页面实测已是伪静态,无需处理





4、重要技术沉淀

需更新到固化摘要:

  1. 二十一、站内链接伪静态化改造(2026-09-14)

  2. 改造范围:所有游客可见、指向帖子内容页的链接(电脑版+手机版)
  3. 模板层替换规律:forum.php?mod=viewthread&tid=xxx → thread-xxx-1-1.html
  4. 数据源修复:forum_index.php 首页四格 slide 数据
  5. 复制链接修复:viewthread.htm 第 222 行,去掉 fromuid 参数
  6. 未处理项:淘帖(原生伪静态)、用户空间(游客不可见)、搜索结果(不索引)、排行榜子页(实测已静态)
  7. 模板缓存清理:rm -rf /www/wwwroot/www.dianbo.org/data/template/*
复制代码


踩坑点:

问题正确做法
花括号未加导致 PHP 语法错误模板中使用 {$thread[tid]},避免 -1-1 被解析为减法
首页四格幻灯片不生效修改 forum_index.php 后需清除 cache_grids.php 缓存
登录用户仍看到动态链接Discuz! 设计如此,登录用户走动态分支,游客和搜索引擎走伪静态
测试时看到动态链接必须用未登录浏览器 + 无痕模式测试
排行榜子页面单独改无效实测主模板已控制,子模板无需重复修改
手机版遗漏电脑版和手机版模板独立,需分别处理
复制链接仍是动态copyThreadUrl 函数复制的是 obj.href,模板中需改为伪静态
fromuid 挂不上伪静态 URL 后应跟 ?fromuid=xxx 而非 &fromuid=xxx,最终选择去掉


关于 Discuz! 伪静态机制的重要发现:

  • Discuz! 的伪静态是登录状态感知的
  • 游客和搜索引擎:输出伪静态链接
  • 登录用户:输出动态链接(携带 ctid 等个性化参数)
  • 但并非所有模块都自动处理,部分模板仍硬编码动态链接,需要手动改
  • copyThreadUrl 函数:复制的是 <a> 标签的 href 属性,模板中直接改 href 即可




5、进一步优化的可能性

方向说明优先级
服务器层 301在 Nginx 加规则,动态 URL 永久 301 到静态 URL中
清理备份文件删除 forumdisplay_list-副本.htm 等无用文件高
观察收录情况通过站长工具确认动态链接是否被正常替代中
检查低频页面群组、空间等页面按需处理低
不懂就搜!点此搜点拨论坛。如果本坛没有,请尝试点此问AI,或跟帖提问。
发帖前注意看置顶帖。
不定期借助AI对点拨论坛陈年老帖进行挖坟回复,打扰勿怪!
在帮助别人的过程中丰富自己
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-10-2 02:41 , Processed in 0.050804 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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