站内搜索结果页通常长这样:?s=关键词 或 /search/关键词。它对用户是工具,但对搜索引擎来说几乎都是低价值:内容重复、URL 数量无限、还容易被垃圾词污染。

所以大多数外贸站的最佳实践是:站内搜索页 noindex,同时确保 sitemap 不提交它。这篇给你三种做法,按你的技术条件选一种即可。

Google 官方文档中关于 noindex 的说明

为什么站内搜索页几乎不该收录?

  • 它只是文章列表的另一种排列(重复度极高)
  • 任何词都能生成一个新 URL(数量无限)
  • 很容易形成薄内容/软 404 信号
  • 被 spam 访问时,搜索词会很脏,拖累站点质量

noindex vs Disallow:别混用

  • noindex:允许抓取,但告诉搜索引擎“不收录”。
  • Disallow(robots.txt):阻止抓取,但不等于一定不收录,且会让搜索引擎无法更新页面状态。

外贸站常见做法:搜索页用 noindex + sitemap 不提交;robots.txt 不要乱封。如果你用 Disallow 封了搜索页,Google 后来想去掉这条 URL 时反而抓不到、无法看到你新加的 noindex,就可能一直留在索引里。

做法一:用 SEO 插件(最省事)

Rank Math / Yoast / AIOSEO 都内置了这个开关,路径大同小异:

  1. Rank Math:SEO 设置 → Misc. Settings → 搜索结果(或 Titles & Meta → Archive Titles)→ Index 选项设为 noindex
  2. Yoast:设置 → 搜索外观(Search Appearance)→ 搜索结果(Search results) 勾选 “不希望搜索引擎显示”
  3. AIOSEO:Search Appearance → Archive/搜索结果 设置为 noindex

设置完,插件通常也会自动把搜索页排除出 sitemap。若不确定,在 sitemap 插件里再确认一次。

做法二:functions.php 加两行(不依赖插件)

如果你用的是自定义主题、或想让规则不随插件变动,在子主题的 functions.php 里加:

add_action('wp_head', function () {
    if (is_search()) {
        echo "<meta name=\"robots\" content=\"noindex, follow\" />\n";
    }
}, 1);

follow 保留是有意为之:让抓取程序继续跟进页面上的链接(你站内的文章链接),只是不把这页本身收进索引。

做法三:.htaccess 直接返 404(进阶,慎用)

如果你的搜索页本身是纯 HTML、不需要被索引,也不想它占用抓取预算,可以直接让它返回 404:

# Apache,仅对 GET 的搜索请求生效
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} (^|&)s=([^&]+)
RewriteRule ^$ - [R=404,L]

但对外贸站更推荐 noindex 而不是 404:搜索页是你自己的站内导航入口,用户和抓取程序都需要能访问它。直接 404 会让内部链接跳转失效,得不偿失。只有在你确认搜索页价值极低、且愿意接受这些代价时再用。

怎么验证是否生效?(3 分钟)

  1. 打开任意搜索页,比如 你的域名/?s=test
  2. 查看网页源码(Ctrl+U),搜索 noindex
  3. 应该能看到 <meta name="robots" content="noindex, follow"> 这类标签
  4. 再在 GSC 的 URL 检查里输入这个搜索页 URL,看“Google 选择的规范网址”是否为“该网址已被排除”

如果搜索页已经被收录了怎么办?

别慌,按顺序做:

  1. 先确保现在页面确实 noindex
  2. 确保 sitemap 不再提交搜索页
  3. 等待 1–4 周让索引更新(这是正常时间)

你也可以用 GSC 的 URL Inspection 请求重新抓取,但是否移除由 Google 决定。想加速,可以让几个做外贸的合作伙伴站点链接或引用你的文章(信号),比单纯请求移除更稳。

下一步建议:把标签/分类等系统页也按策略控制收录,避免膨胀:标签/分类收录策略。