·更新于 2026年10月25日· 21 次浏览 Nuxt3Vue3SEONode.js个人站BUG解决
Nuxt 3 个人站收录太多参数页:我重做了 canonical、robots 和 301
个人站被收录大量分页、筛选和追踪参数页后,我把 URL 分成内容页、状态页和追踪参数三类,再用 canonical、robots 和 301 建立排查闭环。

作者
ZHOUYI
前阵子看收录数据,发现个人站被收了一堆带参数的 URL:文章列表带 utm_source,标签页带 sort,分页从 1 翻到 40。表面上入口变多了,实际上搜索结果里出现大量重复页,正文页反而被稀释。我干脆把 canonical、robots 和 301 规则重做了一遍。
先把 URL 分成三类,再谈规则
- 内容页:文章详情、稳定的栏目首页,允许收录,canonical 指向自身干净路径。
- 状态页:分页、筛选、排序、搜索结果,优先 noindex 或 canonical 到主列表,避免组合爆炸。
- 追踪参数:utm、from、ref 这类只用于归因的参数,一律 301 到去掉参数后的地址。
canonical、robots、301 各管一段
我以前以为 canonical 能解决一切,后来发现它只是告诉搜索引擎哪一页更代表当前内容,抓取仍会发生。robots 负责减少无意义抓取,但不能保证已收录的脏 URL 立刻消失。301 更适合处理明确无价值的参数入口。我的策略是:文章详情保留干净 URL;列表第一页正常收录;深分页和组合筛选 noindex;追踪参数在服务器中间件里直接跳走。
ts
// server/middleware/clean-query.ts
export default defineEventHandler((event) => {
const url = new URL(getRequestURL(event))
const drop = ['utm_source', 'utm_medium', 'from', 'ref']
if (drop.some((k) => url.searchParams.has(k))) {
drop.forEach((k) => url.searchParams.delete(k))
return sendRedirect(event, url.pathname + url.search, 301)
}
})排查闭环:别只改配置,要看日志
- 从 Nginx 日志里统计带问号的 URL,按参数名排序,找出高频脏路径。
- 用内链巡检脚本检查站内链接是否自己拼了追踪参数,避免一边清理一边制造。
- 在 Search Console 抽查收录结果,重点看 ?page=、?sort=、?utm_source= 是否下降。
- 观察一到两周,如果索引没有回落,再补 410 或更细的 noindex。
“SEO 里最容易被忽略的不是规则写法,而是先判断这个 URL 到底是不是一个值得长期存在的内容页。”
这次重做以后,参数页收录逐渐收敛,正文页的展现也稳定了一些。我的体会是:个人站不需要追求所有页面都被收录,反而要把入口收窄,让爬虫和用户都更快找到正文。规则不复杂,难的是持续巡检,别让一次活动参数变成长期索引负担。