站点:https://www.511yj.com(另有 bbs.511yj.com) 环境:WordPress + 主题 aldehyde(2015 年深度改造版)+ PHP 8.3.33 + 阿里云 ECS 完成日期:2026-10-06 状态:第一阶段全部收尾,进入 2~8 周的搜索引擎观察期


一、紧急故障修复(直接影响收录)

# 位置 问题 修法 验证
1 functions.php 反采集函数 空 UA 返回 500(蜘蛛以为站点故障) 改 403 + 蜘蛛白名单 + 删除误伤规则 /PHP/i 空 UA 返回 403 ✅
2 AIOSEO → 工具 → Robots.txt /wp-content/ 拦 CSS/JS、/pagephoto/ 拦配图、/category/ 拦分类页(自伤) 关闭自定义 robots.txt,用默认;开启 Block Internal Search URLs curl 确认三行消失 ✅
3 云锁防火墙 规则 351 误拦 AIOSEO 保存(把设置字段当 SQL 注入) 给规则 351 加白名单 后台能保存 ✅
4 jQuery Updater 插件 强制 jQuery 4.0.0,导致 external.js 报 zIndex 错误 停用并删除插件,回到 WP 核心自带 jQuery jQuery.fn.jquery = 3.7.1 ✅
5 站点地图冲突 XML Sitemap Generator 与 AIOSEO 同时生成地图 删除 XML Sitemap Generator sitemap.xml 归 AIOSEO ✅
6 WPJAM 抢走 title/description WPJAM 输出的 <title> 覆盖了 AIOSEO,导致精心填的关键词标题从未被搜索引擎使用 关闭 WPJAM 的 SEO 输出 见第五章第 3 条 ✅

二、主题模板修改

# 文件 修改内容
7 header.php 补 </head>(原全站缺失);补 wp_body_open();删除未定义的 $keywords/$description(PHP 8.3 报错且与 AIOSEO 重复);删除 IE8 兼容脚本;全部输出转义;站名统一 <h2>
8 page-shouye.php 加 sr-only 隐藏 H1(解决首页无 H1);id="small" → class="small"(约 60 处重复 ID)
9 content-single.php 特色图加 loading="lazy" + 空判断;删除百度分享(服务已下线)
10 content-xiangguan.php 整份重写:<? echo → <?php echo;query_posts → WP_Query;caller_get_posts → ignore_sticky_posts;ORDER BY RAND() → 按日期;删除重复第三块"相关文章"、空 <h3>、重复 ID;图片三级兜底
11 footer.php http → https(5 处);清理语义错误的 rel="designer";补 .mega-container 闭合;删除 360 收录 JS(document.write 阻塞渲染);版权年份自动

三、functions.php 修改

# 原行号 修改内容
12 514-524 删除 /go?url= base64 跳转(开放重定向漏洞 + 空壳页)→ 改为只加 nofollow noopener
13 285-294 删除 eval() 后门(文本小工具可执行任意 PHP)
14 396 删除 remove_action('wp_footer','wp_print_footer_scripts')(会丢 comment-reply、管理栏等)
15 454 登录页 logo http:// → home_url('/')
16 10-12 $content_width 640 → 750
17 485 img 快捷按钮 alt="511遇见" → alt=""(交给自动补 alt 处理)
18 433-437 newPostRefresh → wp_remote_get + blocking=false
19 663-670 IndexNow → blocking=false、timeout 10→5(保存不再卡 10 秒)
20 496-508 bread_nav() 全部输出转义
21 468 login_errors 返回 null → ''
22 582 登录 cookie 1 年 → 30 天
23 234 get_bloginfo('template_url') → get_template_directory_uri()(已废弃)
24 574、576 get_bloginfo('url') ×4 → yj_abs_url()(修废弃函数 + 双域名 bug)
25 全文 短标签 <? echo 全部清理(PHP 8 已移除短标签)

已扫描确认安全、无需修改的

位置 用法 判断
header.php:45 get_bloginfo('name') ✅ 安全,永不废弃
inc/extras.php:54,57 get_bloginfo('name'/'description') ✅ 安全

只有 url 和 template_url 两个参数被 WordPress 废弃,name/description/charset 一直正常。


四、新增代码(追加在 functions.php 末尾)

# 作用
26 自动补图片 alt:空 alt / "511遇见" / "请填写图片描述" 自动填「文章标题 配图N」,已认真填过的不覆盖
27 附件页 noindex(wp_robots 钩子)
28 附件页 301 跳转到所属文章(无归属则跳首页)
29 yj_abs_url() 辅助函数:相对路径补全,已是 http 开头的不重复拼域名
30 logo / 头部图强转 https(数据库存的是 http,输出时替换)
31 post_thumbnail_src() 重写:兜底图自动扫描 uploads/default/,按文章 ID 固定取一张(可缓存、不随机跳变)

兜底图目录

wp-content/uploads/default/ 放 3~5 张同尺寸图(建议 300×200),命名 1.jpg~5.jpg。 注意:img/ 是页脚二维码等专用图,pagephoto/ 是文章配图,都别混用。 仅当文章「无特色图 + 正文无图」时触发 —— 你每篇都设了特色图,所以基本用不上。

⚠️ 关于 nofollow 过滤器的版本选择

早期给的正则版 preg_replace_callback 会重写全文 HTML,在代码块、多行 <a>、属性值含 > 时可能破坏结构导致 CSS 失效。 推荐改用 WP 官方解析器版本(只改属性,不破坏字节):

add_filter('the_content','web589_the_content_nofollow',999);
function web589_the_content_nofollow($content){
    if ( empty( $content ) || ! class_exists( 'WP_HTML_Tag_Processor' ) ) {
        return $content;
    }
    $site = wp_parse_url( home_url(), PHP_URL_HOST );
    $p = new WP_HTML_Tag_Processor( $content );
    while ( $p->next_tag( 'a' ) ) {
        $href = $p->get_attribute( 'href' );
        if ( empty( $href ) ) continue;
        $host = wp_parse_url( $href, PHP_URL_HOST );
        if ( ! $host || substr( $host, -strlen( $site ) ) === $site ) continue;
        $p->set_attribute( 'rel', 'nofollow noopener' );
        $p->set_attribute( 'target', '_blank' );
    }
    return $p->get_updated_html();
}

五、后台设置调整

# 位置 设置
32 AIOSEO → Robots.txt AI 爬虫拦截:全不勾(当前缺流量,不该再拦)
33 后台 → 外观 → 菜单 首页 / BBS / 教程 三项 http → https
34 侧边栏搜索小工具 http://www.so.com/s → https
35 WPJAM → 增强优化 前端公共库 → s4.zstatic.net(原 cdnjs.cloudflare.com 国内常超时)
36 WPJAM → 增强优化 取消「分类链接简化」(与 WP No Category Base 插件重复)
37 WPJAM → 增强优化 Gravatar → Cravatar;Google 字体 → 中科大;Frame 嵌入 → 只允许同域名
38 WPJAM → 增强优化 「图片时间戳」保持勾选 ✅
39 WPJAM → 功能屏蔽 不勾:REST API、WP Cron、feed、oEmbed、RSD
40 WPJAM → 功能屏蔽 建议取消:屏蔽文章修订、屏蔽自动保存(与 functions.php 三重叠加,无回滚手段)
41 WPJAM → 扩展管理 关闭「链接跳转」 ← 它就是 /go?url= 的制造者
42 WPJAM → 扩展管理 关闭「相关文章」(与主题 content-xiangguan.php 重复)
43 WPJAM → 扩展管理 关闭「文章目录」 ← 会改坏正文 HTML,见第七章第 2 条
44 WPJAM → 扩展管理 关闭 SEO 设置(与 AIOSEO 抢 title/description)
45 WPJAM → 扩展管理 保留百度站长、Bing 站长工具(token 已填、推送有效)
46 WPJAM → 扩展管理 保留 Rewrite 优化;移动主题、文章类型转换器可关

WPJAM vs AIOSEO 元信息冲突(今日最实在的一处修复)

改之前:WPJAM 抢走了最重要的两个标签,你在 AIOSEO 里填的标题搜索引擎根本不用。

标签 之前(WPJAM) 现在(AIOSEO)
<title> 511遇见 \| 不一样的遇见(零关键词) 511遇见 - 易语言Lua\|大漠多线程\|火山视窗\|WordPress技术分享 ✅
description 逗号堆砌十几个词 AIOSEO 的完整通顺版本 ✅
keywords 存在(无效标签) 已消失 ✅
og:title 与 title 不一致 与 title 一致 ✅
canonical / JSON-LD AIOSEO AIOSEO ✅

改完之后仍可优化的两处(可选,不影响排名):

  • og:site_name 还是「511遇见 | 不一样的遇见」→ 去「设置 → 常规 → 站点标题」改成 511遇见
  • og:image 只有 130×50 → 社交分享时显示极小。建议做一张 1200×630 分享图,去 AIOSEO → 社交网络 → 默认社交图 设置

六、插件处置

✅ 已删除

插件 理由
XML Sitemap Generator for Google 与 AIOSEO 抢站点地图,还在根目录生成实体文件
jQuery Updater 已停用,WP 核心的 3.7.1 接管
Redirection 装了但没有需要跳转的 URL(分类合并已放弃),空壳留着无意义

⏸ 已停用,观察 3~5 天后删

插件 删之前要确认什么
Advanced Random Posts Widget 侧边栏少的那一栏确定不要了。想补空位去小工具区加个「最新文章」或「分类」,别装回它(随机内链不利于蜘蛛建立结构)
anyLink 确认文章外链是正常直链、没有 /go?url=
Database Backup for WordPress 先确认服务器/面板有自己的备份(阿里云 ECS 一般有快照),有就不用它
Export All URLs 🗑 先用一次:工具 → Export All URLs → 导出全站 URL 清单留着(百度主动推送要用),导出完再删

✅ 必须保留

插件 理由
多合一SEO集 (AIOSEO) 核心 SEO
Baidu Sitemap Generator 页脚 sitemap_baidu.xml 由它生成,删了页脚链接变 404(已验证 200)
WP No Category Base 负责 /category/ 的 301 跳转(已验证 301)
SM Sticky Clicky Star 首页「推荐阅读」Tab 读的就是它管理的置顶文章(无设置菜单,在文章列表的星星列)
Disable Comments RB 全站强制关评论(无独立菜单,开关在「设置 → 讨论」底部)
Redis Object Cache 数据库对象缓存
Cache Enabler 页面缓存(与 Redis 不冲突:一个管数据库查询,一个管整页)
Menu Icons / 经典小工具 / WPS隐藏登录 / WPJAM Basic 正常在用

删除原则

先停用 → 观察 2~5 天 → 确认无异常 → 再删除。 停用 = 能随时启用回来;删除 = 设置和文件都没了。 别无限期留着停用插件 —— 文件还在硬盘上,仍可被直接通过网址访问。


七、排障要点备忘(重要,以后改站先看这里)

1. 首页 9 宫格是硬编码分类 ID

page-shouye.php 的卡片栏目写死了分类 ID(辅助开发、编程语言、网游单机、手游单机、Bootstrap、Css/Html5、JavaScript/jquery、Apache/Nginx、网站运营 SEO)。 动任何分类结构前,先确认首页、导航有没有引用它 —— 改一个分类会连锁反应好几个地方。

2. ⚠️ WPJAM「文章目录」会改坏正文 HTML

设置成 H6 + 显示在文章内容前面 时,它会扫描 H2~H6 并重写 the_content。 后果:站名(H2)和侧边栏栏目标题(H2)被收进目录;遇到「h2/h3 标题 + <pre> 代码块」混合的文章会破坏标签结构,导致后面内容掉出 .entry-content 容器,CSS 整段失效。

症状:新发的带代码块的文章,排版"有的地方有样式、有的没有"。

解决:关闭该扩展。需要时改用 显示层级 H3 + 使用 [toc] 插入内容中,只在文章里写了 [toc] 的地方生成目录。

3. 云锁会拦截含代码的文章保存

在编辑器粘贴含 HTML/SQL/PHP 的内容时,POST 数据会命中 XSS 规则(编号 201,IMG 标签类)被拦,导致内容只存进去一部分。 解决:云锁加 URL 路径例外,豁免这三个后台接口:

/wp-admin/post.php
/wp-admin/admin-ajax.php
/wp-admin/async-upload.php

4. 数据库备份要选对时间点

改分类这类会动数据库的操作前,单独导出相关表(wp_terms / wp_term_taxonomy / wp_term_relationships)最精准。 阿里云整机快照是最后兜底 —— 它会把文件系统层面的代码改动一起回滚,代价太大,别轻易用。

5. 其他

  • 改主题文件后必须同步上传到阿里云 ECS —— 本地 xampp 改了,线上不会自动生效
  • 改完先清 Redis + Cache Enabler,再用无痕窗口验证
  • robots.txt 和 sitemap.xml 都是虚拟的,根目录找不到实体文件是正常的,不要手动上传
  • 云锁禁止根目录写入对 SEO 无影响,反而能防篡改
  • AIOSEO 的面包屑结构化数据(JSON-LD)不要关,它是加分项
  • 首页 H1 由 page-shouye.php 的 sr-only 隐藏标题提供;文章页 H1 是文章标题;站名统一 <h2>,避免双 H1

八、推送相关

项目 说明
IndexNow(Bing/Yandex/Naver 等) functions.php 钩子自动推送,已改 blocking=false。百度不支持 IndexNow
百度普通收录 API WPJAM 百度站长扩展,token 已填、推送有效。注意配额:一次性批量推 1000+ 条可能把剩余配额吃光,以后只推新文章
密钥 txt 文件 🔴 必须保留,主站和 bbs 两个根目录各一份。删了推送全部返回 403
push.php 批量脚本 🗑 用完即删,别长期留在公网(会被恶意调用触发 429 限流)
子域名独立 bbs.511yj.com 和 www.511yj.com 在 IndexNow 眼里是两个 host,各自的根目录都要有密钥文件

验证推送是否真正到达:百度搜索资源平台 → 资源提交 → 主动推送 → 看「已收录条数」(推送成功 ≠ 被收录)。


九、遗留待办(不影响运行)

项目 说明 优先级
处理「未分类」文章 首页 9 宫格有个卡片显示「没有分类」,是 WP 默认的 uncategorized。去文章列表筛「未分类」,给它们分好类,9 宫格就整齐了 中
开启 WP 自动更新 functions.php 568 行关闭了自动更新,出安全漏洞无补丁 中
恢复修订版本 WPJAM + functions.php 两处都禁了,改坏了没有回滚手段 中
精简空分类 只删文章数为 0 的分类即可,冷门分类不用动 —— 分类列表在侧边栏靠下,多几行无所谓 低
制作 1200×630 分享图 替换 130×50 的 og:image,改善微信/QQ 分享观感 低
原图压缩 旅游照片那批原图用 Smush/ShortPixel 压缩,不要手动删缩略图变体(老文章可能有硬编码引用) 低
日期粘连 老文章显示 2016-01-072016-07-10。需改 inc/template-tags.php。不影响 SEO 低
根目录"副本"php 文件 主题目录里若有 index.php 副本 之类,移出主题目录 中

十、常用验证命令(Windows CMD)

REM 先切 UTF-8,避免中文乱码
chcp 65001

REM 空 UA 是否 403
curl -s -o /dev/null -w "%{http_code}\n" -H "User-Agent:" https://www.511yj.com/

REM robots.txt
curl -s https://www.511yj.com/robots.txt

REM 站点地图归属(应显示 All in One SEO)
curl -s https://www.511yj.com/sitemap.xml | findstr /i "All in One"

REM 百度地图(必须 200,页脚在用)
curl -s -o /dev/null -w "%{http_code}\n" https://www.511yj.com/sitemap_baidu.xml

REM 首页 title(应显示 AIOSEO 版本)
curl -s https://www.511yj.com/ | findstr /i "<title>"

REM 首页是否还有 http 链接(无输出 = 通过)
curl -s https://www.511yj.com/ | findstr /i "http://www.511yj.com"

REM 分类旧链接是否 301
curl -s -o /dev/null -w "%{http_code}\n" https://www.511yj.com/category/front-end/

REM 附件页是否 301
curl -s -o /dev/null -w "%{http_code}\n" https://www.511yj.com/511yujian8

REM 文章里是否还有 /go?url=(无输出 = 通过)
curl -s https://www.511yj.com/sf-wydj-34.html > C:\t.html

REM 主题内查找短标签
cd C:\xampp\htdocs\wp-content\themes\aldehyde
findstr /s /i /n /c:"<? " *.php > C:\result.txt

REM 主题内查找废弃函数
findstr /s /i /n /c:"create_function" /c:"mysql_query" /c:"get_bloginfo" *.php > C:\result2.txt

CMD 输出中文乱码时,用 > C:\xxx.txt 存成文件再用记事本打开。 FINDSTR: 写入错误 是管道缓冲区被中文撑爆,不是站点问题。


十一、删除停用插件前的最终检查清单

跑一遍全过再删:

  • [ ] 首页正常(9 宫格、轮播、Tab 都在)
  • [ ] 分类页正常(/front-end/ 有文章、CSS 正常)
  • [ ] 文章页正常(打开带代码块的那篇,排版完整)
  • [ ] 侧边栏完整(搜索、最新文章、视频教程)
  • [ ] 附件页 301
  • [ ] sitemap.xml 归 AIOSEO
  • [ ] sitemap_baidu.xml 返回 200
  • [ ] 文章里搜不到 go?url

十二、本次优化成果总览

板块 状态
抓取通道(500→403、robots.txt 自伤解除、站点地图统一) ✅
PHP 8.3 兼容(短标签清零、废弃函数清零、jQuery 3.7.1) ✅
页面结构(H1、重复 ID、随机内链、附件页 301+noindex) ✅
安全(/go?url= 开放重定向、eval() 后门、未转义输出、logo 强转 https) ✅
元信息统一(WPJAM 抢 title/description 已解决) ✅
插件精简(从十几个减到约 10 个) ✅

下一步:等待 2~8 周,观察 Bing / 百度站长后台的抓取量曲线。这段时间不要再做大的结构改动。


十三、后续修复与踩坑补充(2026-10-07 凌晨)

1. 服务器 ERR_TIMED_OUT 故障

现象:改完 main.css 上传后,浏览器报「www.511yj.com 响应时间太长」ERR_TIMED_OUT。

结论:与 CSS 无关。 CSS 是静态文件,最多样式错乱,不可能导致服务器不响应。实际是 PHP-FPM / Apache 重启后卡住。

排查顺序(以后照这个来):

REM 1. 确认影响范围:本地 curl + 手机流量各测一次
curl -s -o /dev/null -w "%{http_code} 耗时:%{time_total}s\n" -m 15 https://www.511yj.com

REM 2. 服务器上看服务状态
systemctl status httpd
systemctl status php-fpm
systemctl status redis

REM 3. 检查配置语法(有错 Apache 会拒绝启动)
httpd -t

ERR_TIMED_OUT + "响应时间太长" = TCP 能连上但服务器不返回数据 —— 优先怀疑 PHP-FPM 卡死,不是服务器关机。 重启时先想清楚:本地 xampp 的 Apache 和线上 ECS 的 Apache 是两回事,重启本地对线上无任何影响。


2. 🔍 首页卡片 hover 放大效果消失 —— 根因是 Hover.css

现象:首页"图像印记"那 6 张卡片,鼠标移上去不再缓慢放大;分类页、文章页的图都还有效果。

根因(已查实):主题集成了 Hover.css v2.0.1(Ian Lunn,MIT)。放大效果来自它的 .hvr-grow:

.hvr-grow{
  display:inline-block; vertical-align:middle;
  transform:translateZ(0);
  transition-duration:.3s; transition-property:transform;
}
.hvr-grow:active,.hvr-grow:focus,.hvr-grow:hover{
  transform:scale(1.1);
}

scale(1.1) + 0.3s 就是"慢慢变大、由远而近"的感觉。

首页失效的原因:page-shouye.php 的卡片 <a> 从来没挂过 hvr-grow,其他模板挂了。

这是主题 2015 年起就存在的模板不一致,不是本次优化改坏的。 排查中曾误判为 small、stxyj、img-thumbnail vs img-responsive,都排除 —— 教训见第 6 条。

修复(二选一):

方案 A —— 给首页 <a> 加类(效果与全站完全一致)

<div class="col-xs-6 col-md-2 stxyj">
  <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"
     target="_blank" class="hvr-grow">
    <img class="img-thumbnail" src="..." alt="..." loading="lazy" decoding="async">
  </a>
  <p class="xiangguan-title">...</p>
</div>

⚠️ *别加在 `div.col-上** ——.hvr-grow自带display:inline-block,会破坏 Bootstrap 栅格浮动布局,6 列全乱。加在` 上最安全。

方案 B —— 自定义 CSS(不动模板,参数与 .hvr-grow 一致)

.stxyj a { overflow: hidden; }
.stxyj img {
    -webkit-transform: translateZ(0); transform: translateZ(0);
    -webkit-transition-duration: .3s; transition-duration: .3s;
    -webkit-transition-property: transform; transition-property: transform;
}
.stxyj:hover img {
    -webkit-transform: scale(1.1); transform: scale(1.1);
}

3. main.css 里发现的两个真 bug

bug ①:. stxyj p 选择器失效

. stxyj p{         ← 点和 stxyj 之间有空格
   background:#eee; line-height:23px;
   color:#999999; margin-bottom:50px;
}

. 后直接跟空格是无效选择器,浏览器会整条规则忽略 —— 标题区的灰底、行高、颜色一直没生效过。这是"首页没其他地方好看"的原因之一。

修正:删掉空格 → .stxyj p

bug ②:overflow:hidden 加错元素

.stxyj img{width:100%;overflow:hidden;}

overflow:hidden 加在 <img> 上没有意义 —— img 不是容器,自身缩放不会被裁剪。 应加在父容器(.stxyj 或包住图片的 <a>)上,才有"图片在框里由远而近"的效果;不加的话图片放大时会撑破格子、把 6 列布局顶歪。


4. id="small" → class="small" 的副作用(本次优化引入)

<time class="small pull-right">...</time>

Bootstrap 自带 .small { font-size: 80% },改成 class 后首页日期字号被缩到 80%。

修法:全部替换 class="small pull-right" → class="pull-right",恢复原字号。

page-sitemap.php 里仍保留着 <time id="small">(该文件没改过),说明 small 一直是给日期用的,跟图片放大无关。


5. 标题文字样式微调

.xiangguan-title{
   padding-top:5px;
   height: 23px;        ← 容器 23
   line-height: 33px;   ← 行高 33
   color:#999999; overflow:hidden;
}

行高比容器高 10px,文字会被 overflow:hidden 裁掉一截。 两值必须一致:

.xiangguan-title{ padding-top:5px; height:33px; line-height:33px; color:#999999; overflow:hidden; }

标题背景与网页背景统一:把 .stxyj p 的 background:#eee 改成 background:transparent。

用 transparent 而不是 #fff —— 不管网页背景是纯白还是带纹理都能自然透出,不会留"补丁色"。


6. 🎯 三次同类失误的教训(最重要的一节)

本次优化过程中犯了同一类错误三次:改了一处,没查谁在用它。

# 疏忽 后果
1 合并 WordPress 子分类,没先看首页引用 首页 9 宫格空一格,最终回滚数据库
2 id="small" → class="small",没查框架是否占用 日期字号被 Bootstrap 缩到 80%
3 首页放大效果排查时连猜三次(small/stxyj/img-*)都错 浪费大量时间,最后靠备份对比 + 源码直读才定位

正确的排查姿势(别再猜):

REM ① 全局搜关键词,看哪些文件引用了它
cd C:\xampp\htdocs\wp-content\themes\aldehyde
findstr /s /i /n /c:"hvr-grow" *.php > C:\hvr.txt

REM ② 备份文件与线上文件对比(最快确认"是不是我改丢的")
fc C:\备份路径\main.css C:\xampp\htdocs\wp-content\themes\aldehyde\main.css

REM ③ 让浏览器直接告诉你(最准)
REM    F12 → 选中元素 → 右侧 Styles 面板 → 点 :hov → 勾 :hover
REM    新出现的规则就是答案,面板会显示"哪个文件第几行"

改动前必问三句:

  1. 这个 id / class / 分类 ID,还有谁在引用它?
  2. 我用的这个 class 名,框架(Bootstrap / Hover.css)是不是已经占用了?
  3. 改完之后,首页、导航、侧边栏有没有连锁反应?

7. 分类合并:已放弃,恢复原状

过程:为让侧边栏少显示 4 行,把 WordPress 的 4 个子分类合并进父分类 → 触发首页 9 宫格空一格 → 数据库回滚恢复。

结论:收益(少 4 行)远小于代价(折腾 + 回滚风险)。分类多了 4 行访客根本不在意,搜索引擎更不会因此改观。

最终结果:

  • 分类结构恢复原样,4 个子分类保留
  • 未删分类 → 不产生 404 → 不需要 301
  • Redirection 插件已删除(没有要跳的 URL)
  • 数据库用「合并前」的整库备份恢复,仅撤销分类合并,其余设置全部保住

备份时间点选对是这次能全身而退的关键 —— 备份是在"合并分类"这最后一步之前做的,所以只回滚了这一步,前面所有优化成果完好无损。

8. 判断"值不值得做"的原则

以后遇到"要不要动某个东西",先算这笔账:

收益 代价
分类合并 侧边栏少 4 行 首页错乱 + 回滚 + 半天时间

收益 < 代价 → 直接不做。

这次的教训是:用户问"有没有必要"时,应该直接回答"没必要,别动",而不是顺着往下出技术方案。


十四、更新后的遗留待办

项目 说明 优先级
首页卡片加 hvr-grow 见第十三章第 2 条,让首页放大效果与全站一致 中
修 . stxyj p 的空格 见第十三章第 3 条,否则那条规则一直是失效的 中
首页 class="small pull-right" → pull-right 恢复日期字号 中
.xiangguan-title 的 height/line-height 对齐 避免标题文字被裁 中
处理「未分类」文章 首页 9 宫格有个卡片显示「没有分类」 中
开启 WP 自动更新 / 恢复修订版本 见第九章 中
制作 1200×630 分享图 替换 130×50 的 og:image 低
精简空分类 只删文章数为 0 的即可 低