如何通过robots.txt禁止抓取带锚点(#)的URL?
禁止Google抓取带锚点的URL的robots.txt正确配置
为什么之前的Disallow: *#会误封内容
Disallow: *#的匹配范围过于宽泛,它会匹配任何包含#字符的URL——哪怕是正常文章页面里带锚点的链接(比如https://example.com/post/#comments),这就会把原本需要被抓取的重要文章一并禁止,导致误封。
正确的规则写法:Disallow: /*#*
这个规则会精准匹配路径部分包含/#的URL,比如你提到的https://example.com/#how_to_do_something,或是子页面下的锚点URL如https://example.com/article/#section_1,既能覆盖目录插件生成的跳转URL,又不会误封不含锚点的正常文章页面。
如果你的目录插件生成的锚点URL都是域名后直接跟#的形式(比如https://example.com/#xxx),也可以用更精准的规则:
Disallow: /#*
完整的robots.txt配置示例
User-agent: Googlebot Disallow: /*#* User-agent: * Allow: /
该配置仅针对Googlebot禁止抓取带锚点的URL,不影响其他爬虫正常访问站点内容。
额外注意事项
- Google默认会忽略URL中的锚点部分(#后的内容),但如果你的站点是单页应用,或是锚点会触发动态加载新内容,Google可能会将不同锚点的URL视为独立页面,此时禁止抓取才能有效节省爬取预算。
- 配置完成后,建议通过Google Search Console的「robots.txt测试工具」验证规则是否生效,避免再次出现误封。
内容的提问来源于stack exchange,提问作者Kimia Houshidari
相关产品推荐
相关产品推荐

