【问题标题】:How do I only allow crawlers to visit a part of the site?如何只允许爬虫访问网站的一部分?
【发布时间】:2013-07-30 08:41:47
【问题描述】:

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

在 PHP 中,我如何确保只有机器人可以访问网站的这一部分? (很像 StackOverflow 不允许普通用户访问其站点地图,只允许机器人访问它)

【问题讨论】:

    标签: php web-crawler robots.txt


    【解决方案1】:

    你不能,至少不可靠。

    robots.txt 要求蜘蛛将网站的某些部分排除在外,但对于普通用户代理来说没有等效的。

    您最接近的方法是尝试保留可接受的 IP 地址或用户代理的白名单,并据此提供不同的内容……但这可能会导致误报。

    就我个人而言,我会停止迎合旧版 IE,放弃 #! URI 和 escaped_fragment hack,改用 pushState and friends,并让服务器为任何给定页面构建初始视图。

    【讨论】:

    • 恐怕项目的要求是兼容旧版IE。为了完成您提出的解决方案,我应该禁止 PHP 端是否有非机器人用户代理的列表或通配符?我不会太严格 - 当然有人可以欺骗 UA,但我想尽我所能将“原始”网址排除在搜索引擎之外。
    • 这看起来很有希望,我会在接下来的几天里看看它:phpmaster.com/server-side-device-detection-with-browscap
    猜你喜欢
    • 2010-12-10
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多