🎀 🌸

robots.txt 与 sitemap.xml 正确写法(WordPress 版)

robots.txt 与 sitemap.xml 正确写法(WordPress 版)

robots.txt 决定「不许看什么」,sitemap 决定「优先看什么」。两者配合使用,才能把有限的抓取预算导向真正重要的页面。

它们的共同点是:写错一个字符,后果都是全站级别的。所以在改之前,先把当前版本备份下来。

robots.txt:规则比你想的严格

放在站点根目录,必须通过 https://域名/robots.txt 可访问,返回 200 且是纯文本。如果这个地址返回 404,搜索引擎的行为是允许抓取全部——比写错更危险。

一份可直接用的模板

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Disallow: /go/
Disallow: /*?replytocom=
Disallow: /*&preview=
Allow: /wp-content/uploads/

Sitemap: https://blog.nvcb.cn/wp-sitemap.xml

逐条说明:

规则作用
Disallow: /wp-admin/屏蔽后台,唯一例外是 admin-ajax.php,某些前端功能依赖它
Disallow: /?s=屏蔽站内搜索结果页,避免无限 URL 组合
Disallow: /go/屏蔽跳转中转页(如果站点有)
Disallow: /*?replytocom=屏蔽评论回复链接,这类 URL 数量随评论爆炸
Allow: /wp-content/uploads/确保图片可被抓取,图片搜索流量依赖它

四条必须记住的规则

  1. 路径是前缀匹配,不是通配。Disallow: /tag/ 会屏蔽所有以 /tag/ 开头的地址,包括 /tagging/。要精确匹配得写 Disallow: /tag/$ 之类的通配语法。
  2. 大小写敏感。/Tag/ 和 /tag/ 是两回事。
  3. 越具体的 User-agent 优先级越高。针对 Googlebot 的独立规则会覆盖 * 的规则,所以给爬虫分组的写法要格外小心。
  4. Do not 同时用 robots 屏蔽和 noindex。屏蔽后爬虫读不到 noindex,页面会以「被屏蔽」状态长期留在索引里,且里面的链接权重传递也会中断。

提交前的自检

用 GSC 的 robots.txt 测试工具,输入任意一个正文页 URL,确认返回「网址可抓取」。这一步能挡住 90% 的误屏蔽。

sitemap:不是越多越好

sitemap 的作用是「发现」,不是「收录保证」。把垃圾页面塞进去,只会稀释真正重要页面的抓取频率。

WordPress 原生 sitemap

地址 /wp-sitemap.xml,它会自动分出几个子 sitemap:

wp-sitemap.xml
├── wp-sitemap-posts-post-1.xml      ← 文章,最重要
├── wp-sitemap-posts-page-1.xml      ← 独立页面
├── wp-sitemap-taxonomies-category-1.xml
├── wp-sitemap-taxonomies-post_tag-1.xml  ← 标签,通常需要过滤
└── wp-sitemap-users-1.xml           ← 作者页,通常不需要

三个需要处理的地方:

1. 过滤掉内容过少的标签

add_filter('wp_sitemaps_taxonomies_query_args', function ($args, $taxonomy) {
    if ($taxonomy === 'post_tag' || $taxonomy === 'category') {
        $args['count_min'] = 3;   // 低于 3 篇的标签/分类不输出
    }
    return $args;
}, 10, 2);

这一步做完,sitemap 里的标签页数量通常会从几百降到几十,剩下的才是有内容价值的。

2. 移除作者 sitemap

单作者站点(绝大多数博客)完全不需要作者归档页被收录。两种做法:

// 方式一:从 sitemap 里排除
add_filter('wp_sitemaps_add_provider', function ($provider, $name) {
    return ($name === 'users') ? false : $provider;
}, 10, 2);
// 方式二:给作者页加 noindex
add_action('wp_head', function () {
    if (is_author()) {
        echo '<meta name="robots" content="noindex, follow">' . "\n";
    }
}, 1);

3. 确认 lastmod 是真实修改时间

WordPress 原生 sitemap 输出的 <lastmod> 取的是文章修改时间,这是正确的。但有些插件会把它写成「生成 sitemap 的时间」,导致每次更新 sitemap 所有条目的日期都变成今天——搜索引擎会识别出来并忽略这个字段。

检查方式:打开 sitemap,看是不是所有 <lastmod> 都是同一个日期。是的话就是假的。

把两者配合起来看

一张表说清分工:

页面robots.txtsitemap用哪个
正文文章允许收录两者一致
后台 /wp-admin/屏蔽不收robots 足够,无需 noindex
站内搜索结果页屏蔽不收robots 足够
内容少的标签页允许不收用 noindex,不用 robots
带参数 URL部分屏蔽不收优先 canonical 归一

判断「该用哪个」的通用原则:

  • 页面永远不需要被抓取(后台、内部接口)→ 用 robots.txt;
  • 页面可以被抓取,但不想被索引(薄内容标签页、归档页)→ 用 noindex,且不要 robots 屏蔽;
  • 页面内容重复,但有一个正版→ 用 canonical。

上线检查清单

  1. /robots.txt 返回 200,内容是纯文本,无 HTML 标签混入;
  2. robots 里没有任何一条规则会屏蔽正文路径;
  3. robots 里包含绝对地址的 Sitemap 声明;
  4. sitemap 能被打开,子文件全部返回 200;
  5. sitemap 中文章 URL 占比 ≥ 70%;
  6. <lastmod> 不是全部同一天;
  7. 在 GSC 里重新提交 sitemap;
  8. 用 GSC 的 robots 测试工具验证一个正文页「可抓取」;
  9. 用网址检查工具验证一个正文页「可以编入索引」。

这九项花不到二十分钟,但它们决定了你后面所有内容工作的上限。

常见问题

sitemap 里的 URL 会全部被收录吗?

不会。sitemap 只影响发现速度和抓取优先级,是否索引仍由内容质量和 robots/noindex 决定。把低质量页面塞进去不会让它被收录,只会浪费抓取额度。

修改 robots.txt 后多久生效?

搜索引擎通常在下次抓取 /robots.txt 时生效,一般几小时到一天。但也可能缓存更久,重要改动建议同时在 GSC 里用测试工具主动验证。

能不能完全不要 sitemap?

技术上可以,只要内链结构足够好,搜索引擎也能发现所有页面。但对内容型站点,sitemap 能显著加快新文章的发现速度,尤其对数量已经上百的站点,成本几乎为零,建议保留。

图片[1]-robots.txt 与 sitemap.xml 正确写法(WordPress 版)-极客资源
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容