SvelteKit路由Slug为何被Google Search Console收录?
为什么Google Search Console会收录SvelteKit SSR应用的未解析带Slug路由?
这种情况我在帮朋友排查SvelteKit项目时遇到过几次,主要是这几个原因导致的,给你拆解下:
可能的原因
- 爬虫顺着无效链接爬进来了:要么是你网站内部存在生成这类未解析slug的链接(比如测试阶段留下的测试链接、循环渲染时的错误输出,甚至是组件里的调试代码),要么是有外部网站的反向链接指向了这些无效路径。Google爬虫只要能发现链接,就会尝试爬取,哪怕页面不存在。
- 动态路由的HTTP状态码返回有误:如果你的
[slug]动态路由在处理不存在的slug时,没有返回标准的404状态码(比如不小心返回了200,或者页面显示404但HTTP头是200),Google会误以为这是有效页面,自然就收录了。 - Google的自动路径猜测:如果你的有效路由有明显的规律(比如
/blog/123、/blog/456),Google爬虫可能会自动尝试类似格式的路径,比如/blog/9999这类不存在的slug。
解决办法
针对这些问题,你可以按下面的步骤处理:
- 先清理无效链接:检查网站所有页面的源码,看看有没有生成这些无效slug的链接,尤其是动态渲染的部分(比如循环列表时的错误逻辑)。同时在Google Search Console的「链接」报告里查看外部链接来源,如果有外部网站指向无效路径,可以联系站长移除,或者用robots.txt屏蔽。
- 确保动态路由返回正确的404:在SvelteKit的动态路由页面逻辑里,当检测到slug不存在时,一定要抛出404错误。比如在
+page.server.js里:
这样服务器会返回标准的404状态码,Google识别后会标记为无效页面,后续会从索引中移除。import { error } from '@sveltejs/kit'; export async function load({ params }) { // 假设你从数据库获取内容 const content = await getContentBySlug(params.slug); if (!content) { throw error(404, 'Content not found'); } return { content }; } - 用robots.txt临时屏蔽(可选):如果有大量无效路径,可以在
static/robots.txt里添加精准的屏蔽规则,比如:
注意规则要精准,别误伤有效路由。User-agent: * # 屏蔽所有不符合你有效slug规则的路径,示例: Disallow: /blog/*-fake-* - 提交索引移除请求:对于已经收录的无效页面,直接在Google Search Console的「索引」→「移除」模块提交移除请求,Google会在几天内处理并从索引中删除这些页面。
内容的提问来源于stack exchange,提问作者Gin Quin
相关产品推荐
相关产品推荐

