如何只允许爬虫访问网站的一部分


How do I only allow crawlers to visit a part of the site?

我有一个丰富的ajax网站,其中包含大量用于Ajax索引的_escaped_fragment_部分。虽然我所有的 _escaped_fragment_ url 都执行 301 重定向到一个特殊模块,然后输出爬虫所需的 HTML 快照(即 mysite.com/#!/content重定向到mysite.com/?_escaped_fragment_=/content又 301 到 mysite.com/raw/content (,我有点害怕用户自己偶然发现这些"原始"URL 并使它们出现在搜索引擎中。

在PHP中,如何确保只有机器人才能访问网站的这一部分?(就像StackOverflow不允许普通用户使用其站点地图一样,只允许机器人访问它(

你不能

,至少不可靠。

robots.txt要求蜘蛛远离网站的某些部分,但对于常规用户代理来说,没有等效项。

您可以得出的最接近的方法是尝试保留可接受的IP地址或用户代理的白名单,并在此基础上提供不同的内容......但这有误报的风险。

就我个人而言,我会停止迎合旧的IE,废弃#! URI和escaped_fragment黑客,改用pushState和朋友,并让服务器为任何给定页面构建初始视图。