Article
SEO 边界检查器:把 robots 和 sitemap 变成一张可读地图
技术笔记2026年6月19日 09:101 min
SEO 不只是让页面被找到,也包括明确告诉爬虫哪些入口不应该被找到。
SEO 边界检查器关注的不是关键词分数,而是网站的公开边界。
这个博客同时存在公开文章、后台页面、管理 API、公开生活记录和私密预览。如果只检查 sitemap 里有没有链接,很容易忽略更重要的问题:后台有没有意外暴露,私密内容有没有进入索引,robots.txt 是否真的指向当前 sitemap。
工具加载当前站点的 /robots.txt 和 /sitemap.xml,然后把文本解析成两组简单数据。robots 只提取这次检查关心的 Disallow 与 Sitemap,避免把展示层绑在原始字符串上。
export function parseRobotsTxt(content: string) {
return content.split(/\r?\n/).reduce((result, line) => {
const disallow = line.trim().match(/^disallow\s*:\s*(.+)$/i)
const sitemap = line.trim().match(/^sitemap\s*:\s*(.+)$/i)
if (disallow?.[1]) result.disallows.push(disallow[1].trim())
if (sitemap?.[1]) result.sitemaps.push(sitemap[1].trim())
return result
}, { disallows: [], sitemaps: [] })
}
sitemap 中的 <loc> 会被提取并转换为路径,再按 Article、Life、Static、Admin、API 和 Other 分类。这里没有依赖浏览器 DOMParser,因为输入结构很小,纯函数在服务端渲染和单元测试环境里都更容易复用。
export function categorizeSitemapPath(path: string) {
if (path === '/admin' || path.startsWith('/admin/')) return 'Admin'
if (path === '/api' || path.startsWith('/api/')) return 'API'
if (path === '/blog' || path.startsWith('/blog/')) return 'Article'
if (path === '/life' || path.startsWith('/life/')) return 'Life'
return ['/', '/lab', '/about', '/contact'].includes(path) ? 'Static' : 'Other'
}
最后,界面把规则组合成几个可以快速判断的检查项:/admin 是否被拦截、/api/admin 是否被拦截、robots 是否链接 sitemap、sitemap 是否混入后台入口、公开文章是否存在,以及私密样例是否被隐藏。
这类检查不能替代完整 SEO 审计,但很适合放在个人网站的日常维护里。它把两个平时只在部署后偶尔打开的文本文件,变成了一张随时可以刷新确认的边界地图。
可以在 SEO 边界检查器 查看当前站点的真实结果。
Comments
留言
需要 GitHub 登录。新评论会先进入待审核,别急,它只是先坐到门口等一会儿。
使用 GitHub 登录后可以评论。
已通过评论
0还没有通过审核的评论。桌子很安静,第一杯茶还没端上来。