织梦如何批量清理空文档
织梦站点运营一段时间后,常会堆积一批“空文档”——标题存在但正文为空、或正文仅有几个字符的文档。这些空文档不仅占用数据库,还会被搜索引擎抓取后判定为低质页面,拖累整站权重。批量清理空文档是织梦日常维护中不可忽视的一环。
一、空文档的成因
清理前先了解空文档是怎么来的,才能从源头阻断再生:
- 采集失败:采集规则失效,正文未抓到,只存了标题。
- 手动误建:后台发布时只填标题就提交,正文留空。
- 定时发布异常:批量录入时正文字段未写入。
- 字符数极少:正文仅几十字,实质等同于空文档。
- 伪原创失败:替换后正文被清空或截断。
二、清理前的准备工作
- 备份数据库:在宝塔或 phpMyAdmin 中导出整库 SQL,命名带日期。
- 备份静态文件:打包
/a/目录(织梦默认HTML存放目录)。 - 导出空文档清单:先查出空文档列表存为 CSV,便于事后核对与提交死链。
- 站点低峰执行:选择凌晨操作,避免影响在线访问。
三、识别空文档的 SQL
织梦正文存在 dede_addonarticle 表的 body 字段,标题与状态在 dede_archives 表。空文档判定标准:body 为空、或去除标签后字符数低于阈值。
1. 查询正文为空的文档
SELECT a.id, a.title, a.typeid, a.senddate
FROM dede_archives a
LEFT JOIN dede_addonarticle b ON a.id=b.aid
WHERE a.channel=1
AND (b.body IS NULL OR TRIM(b.body)=''
OR TRIM(REPLACE(REPLACE(b.body,' ',''),' ',''))='');
2. 查询正文过短的文档
去除 HTML 标签后正文少于 100 字符的文档,建议一并清理:
SELECT a.id, a.title, LENGTH(REGEXP_REPLACE(b.body, '<[^>]+>', '')) AS len FROM dede_archives a JOIN dede_addonarticle b ON a.id=b.aid WHERE a.channel=1 AND LENGTH(REGEXP_REPLACE(b.body, '<[^>]+>', '')) < 100;
注意:MySQL 5.7 以下不支持 REGEXP_REPLACE,可改用 PHP 端 strip_tags 后统计长度再删除。
四、批量删除空文档
删除须同时清理主表、附加表、TAG 关联表,否则会留下孤儿数据。推荐用 PHP 脚本调用织梦自带删除逻辑,而非直接 DELETE:
// clean_empty.php
require_once(dirname(__FILE__).'/include/common.inc.php');
require_once(DEDEINC.'/oxwindow.class.php');
require_once(DEDEADMIN.'/inc/inc_batchup.php');
$ids=array(); // 上一步查出的空文档 id 数组
foreach ($ids as $id) {
DelArc($id); // 织梦自带删除函数,会清理主表/附加表/TAG/HTML
}
echo "已清理 ".count($ids)." 篇空文档";
若不便运行脚本,也可在后台 → 核心 → 批量维护 → “批量管理文档”中按条件筛选后删除,但效率较低,适合少量清理。
五、删除后的善后
1. 重新生成静态
删除文档后,相关栏目列表页与首页仍可能保留旧链接,需重新生成 HTML:
后台 → 生成 → 一键更新网站 → 更新所有
2. 提交死链
已被搜索引擎收录的空文档 URL,删除后会变成死链。把空文档原 URL 整理成 txt,上传到根目录并在百度站长平台提交死链:
https://www.example.com/old-empty-1.html https://www.example.com/old-empty-2.html
3. 修复 robots
若部分空文档来自采集失败,可在 robots.txt 中屏蔽采集来源目录,避免再次被抓取入库。
六、防止空文档再生
- 发布前校验:修改
article_add.php,提交时校验正文字符数低于 100 则拦截。 - 采集后审核:采集的文档默认设为“未审核”,人工抽查后再上线。
- 定时巡检:宝塔添加计划任务,每周执行一次空文档查询脚本,输出报表。
- 权限管控:限制编辑账号直接发布权限,必须经过审核。
七、清理效果验证
清理完成后,通过三个维度验证效果:百度站长平台“索引量”是否回升、site 域名快照中空文档是否消失、栏目列表页是否还有死链。若索引量在 1~2 周内回升,说明清理有效。
后续建议
空文档清理不是一次性动作,建议纳入月度维护计划:每月跑一次空文档查询脚本,及时清理新生成的低质文档。同时把发布校验、采集审核等防再生措施落实到位,让站点始终保持“干净”的内容库,这才是织梦站点长期获得良好收录的基础保障。