活力39282
在线时间13640 小时
阅读权限200
管理员
自由的灵魂
- 积分
- 107434
- 主题
- 5630
- 回帖
- 26661
- 注册时间
- 2003-4-10
- 最后登录
- 2026-10-2
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1、问题缘起
在 Bing Webmaster Tools 中发现百度搜索结果中主域名 www.dianbo.org 的收录量异常(前台仅显示 1 条结果,域名显示为 bbs.dianbo.org),怀疑旧版 /bbs/ 路径的链接未正确传递权重。
排查过程中发现的核心问题:
| 序号 | 问题 | 影响 | | 1 | /bbs/ 目录下残留 ASP 和 PHP 旧文件 | 依赖不存在的 ASP 环境,无法执行 | | 2 | 根目录遗留 viewthread.php 和 301.inc.php 文件 | 产生二次跳转,未一步到位 | | 3 | Nginx 重定向规则未完全接管 | 旧链接未正确 301 到新地址 | | 4 | 删除遗留文件后 /viewthread.php 返回 404 | 旧链接权重丢失 |
2、解决方案
(1)简要技术分析
核心原理:删除服务器上所有旧的跳转文件,让 Nginx 通过精确匹配的 location = 规则,直接接管所有旧路径请求,实现一步到位的 301 永久重定向,确保链接权重完整传递到 Discuz! X3.5 的标准路由。
(2)修改、删除文件列表
| 操作类型 | 文件路径 | 说明 | | 删除 | /www/wwwroot/www.dianbo.org/bbs/ 整个目录 | 旧动网论坛遗留文件(含 ASP/PHP) | | 删除 | /www/wwwroot/www.dianbo.org/viewthread.php | 遗留跳转文件 | | 删除 | /www/wwwroot/www.dianbo.org/301.inc.php | 遗留跳转配置文件 | | 修改 | /www/server/panel/vhost/nginx/www.dianbo.org.conf | 添加/修正 Nginx 301 重定向规则 |
(3)关键 Nginx 配置代码
添加位置:server { ... } 块内,location ~ \.php$ 规则之前
- # ============================================
- # 🚀 旧版 /bbs/ 路径 301 永久重定向
- # ============================================
- # 1. dispbbs.asp - 动网帖子/版块跳转
- location = /bbs/dispbbs.asp {
- if ($arg_ID) {
- return 301 [url]https://www.dianbo.org/thread-[/url]$arg_ID-1-1.html;
- }
- if ($arg_BoardID) {
- return 301 [url]https://www.dianbo.org/forum-[/url]$arg_BoardID-1.html;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- # 2. dispuser.asp - 用户空间跳转
- location = /bbs/dispuser.asp {
- if ($arg_ID) {
- return 301 [url]https://www.dianbo.org/home.php?mod=space&uid=[/url]$arg_ID;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- # 3. viewthread.php - 核心帖子跳转(关键!)
- location = /bbs/viewthread.php {
- if ($arg_tid) {
- return 301 [url]https://www.dianbo.org/thread-[/url]$arg_tid-1-1.html;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- # 4. forumdisplay.php - 版块跳转
- location = /bbs/forumdisplay.php {
- if ($arg_fid) {
- return 301 [url]https://www.dianbo.org/forum-[/url]$arg_fid-1.html;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- # 5. 根目录遗留 viewthread.php 兜底(文件已删除,用规则捕获)
- location = /viewthread.php {
- if ($arg_tid) {
- return 301 [url]https://www.dianbo.org/thread-[/url]$arg_tid-1-1.html;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- # 6. 其他 PHP 文件通用跳转
- location = /bbs/space.php {
- if ($arg_uid) {
- return 301 [url]https://www.dianbo.org/home.php?mod=space&uid=[/url]$arg_uid;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- location = /bbs/group.php {
- if ($arg_gid) {
- return 301 [url]https://www.dianbo.org/forum.php?mod=group&fid=[/url]$arg_gid;
- }
- return 301 [url]https://www.dianbo.org/;[/url]
- }
- # 7. 其他所有 /bbs/ 路径通用跳转
- location ^~ /bbs/ {
- rewrite ^/bbs(/.*)$ [url]https://www.dianbo.org[/url]$1 permanent;
- }
- # 8. 精确匹配 /bbs
- location = /bbs {
- return 301 [url]https://www.dianbo.org/;[/url]
- }
复制代码
3、最终实现效果
| 测试项 | 修改前 | 修改后 | | curl -I /bbs/viewthread.php?tid=14515 | Location: /viewthread.php?tid=14515(二次跳转) | Location: /thread-14515-1-1.html(一步到位) | | /viewthread.php?tid=14515 | 200(由遗留文件处理) | 301 → thread-14515-1-1.html | | /bbs/dispbbs.asp?BoardID=43 | 404 | 301 → /forum-43-1.html | | 百度收录主域名 | 混乱(显示 bbs.dianbo.org) | 逐步恢复,权重开始传递 |
重定向链路对比:
| 场景 | 修改前 | 修改后 | | 旧帖子链接 | /bbs/viewthread.php?tid=14515 → /viewthread.php → forum.php?mod=viewthread | /bbs/viewthread.php?tid=14515 → thread-14515-1-1.html | | SEO 权重传递 | 多次跳转,权重流失 | 一步到位,权重完整传递 |
4、重要技术沉淀
踩坑点:
| 问题 | 教训 | | 正则匹配 location ~ 可能被后续规则覆盖 | 使用 location = 精确匹配,优先级最高,避免被其他规则干扰 | | 遗留物理文件会"劫持" Nginx 规则 | 删除旧文件后,Nginx 规则才能真正生效 | | 根目录 viewthread.php 被删除后返回 404 | 需额外添加 location = /viewthread.php 规则捕获外部残留链接 | | 跳转目标未补全伪静态后缀 | 帖子跳转用 thread-$arg_tid-1-1.html,版块跳转用 forum-$arg_fid-1.html | | 使用 $arg_ 变量比 set 更安全 | 避免变量名冲突(如 $pid 与内置变量冲突) |
需要更新到固化摘要的内容:
- /bbs/ 目录已完全清除,所有旧链接由 Nginx 301 接管
- 根目录遗留的 viewthread.php 和 301.inc.php 已删除
- 新增 /viewthread.php 的重定向规则作为兜底
- 所有旧路径跳转目标均为伪静态地址,一步到位
5、进一步优化的可能性
| 构想 | 说明 | 优先级 | | 监控旧链接访问日志 | 分析 /bbs/ 路径的访问来源,针对性地提交死链删除 | ⭐⭐ 可选 | | Bing/Baidu 死链提交 | 将已确认失效的旧链接提交给搜索引擎,加速清除 | ⭐⭐ 可选 | | 检查其他遗留文件 | 扫描根目录是否还有其他 Discuz! 7.0/动网时代的遗留文件 | ⭐ 低 |
维护日志编号:LOG-20260516-004
影响范围:全站所有 /bbs/ 路径及根目录 viewthread.php 的旧链接
回滚方案:恢复 /bbs/ 目录备份,还原 Nginx 配置文件备份
|
|