2011-01-14 98 views
3

我正在寻找最好的解决方案我如何能确保我这样做正确:的robots.txt和谷歌日历

我有我的网站上一个日历,用户在其中可以采取的iCal日历和饲料将其导入到其偏好的外部日历中(Outlook,iCal,Google日历等)。

为了阻止坏人从* .ics文件抓取/搜索我的网站,我已经设置Robots.txt以禁止存储订阅源的文件夹。

所以,从本质上讲,一个iCal供稿可能看起来像:WebCal中://www.mysite.com/feeds/cal/a9d90309dafda390d09/feed.ics

我明白上面是仍然公开网址。但是,我有一个功能,用户可以根据需要更改其Feed的地址。

我的问题是:除Google日历外,所有外部日历在导入/订阅日历Feed时都没有问题。它会抛出以下消息:由于robots.txt限制,Google无法抓取该网址。 Google's Answer to This

因此,围绕搜索后,我发现了以下工作:

1)安装一个PHP文件(我用的),基本上强制下载的文件。它基本上是这样的:

<?php 
$url = "/home/path/to/local/feed/".$_GET['url']; 
$file = fopen ($url, "r"); 
if (!$file) { 
    echo "<p>Unable to open remote file.\n"; 
    exit; 
    } 
while (!feof ($file)) { 
    $line = fgets ($file, 1024); 
print $line; 
} 
fclose($file); 
?> 

我试过使用这个脚本,它似乎与谷歌日历一起工作,没有问题。 (虽然我不确定它是否会更新/刷新,但我仍然在等待看看它是否有效)。

我的问题是这样的:有没有更好的方法来处理这样的问题?我想保留当前的Robots.txt,以便不允许抓取* .ics文件的目录并隐藏文件。

+2

的robots.txt谷歌的网站管理员工具帮助页面,大多数主要的搜索引擎爬虫会履行一个完全自愿的机制,但恶意用户将完全忽略(实际上,作为源使用如果您实际上锁定了您网站上的特定网址,请抓取地点) – 2011-01-14 03:41:38

回答

1

可你有两个问题:

  1. 阻止访问该网站不良行为的机器人 。
  2. 经过 安装robots.txt,允许 Googlebot访问您的网站。

第一个问题无法通过robots.txt解决。正如Marc B在评论中指出的那样,robots.txt是一个纯粹的自愿机制。为了一劳永逸地阻止badbots,我会建议你使用某种行为分析程序/防火墙来检测不良机器人并拒绝来自这些IP的访问。

对于第二个问题,robots.txt确实允许您将特定的bot加入白名单。以http://facebook.com/robots.txt为例。注意到Google使用不同的名称(用于Adsence,搜索,图片搜索和移动搜索)来标识他们的机器人,但如果Google日历机器人使用通用的Google机器人名称,则不是。

+0

另请查看http://wikipedia.org/robots.txt ...您会感到惊讶! – timdream 2011-01-14 06:11:08

4

我最近有这个问题,这robots.txt适合我。

User-agent: Googlebot 
Allow: /*.ics$ 
Disallow:/

User-agent: * 
Disallow:/

这允许访问任何。ics文件,如果他们知道该地址并阻止漫游器搜索该站点(这是一个私人服务器)。您将需要更改服务器的disallow标签。

我不认为允许标记是规范的一部分,但一些机器人似乎支持它。这里是robots.txt的
http://support.google.com/webmasters/bin/answer.py?hl=en&answer=156449

+0

这个答案适合我。 Google有一个页面,解释他们的通配符处理如何在https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt上的robots.txt中运作 – Jason 2014-11-05 18:51:49