Reppy 对某些条目表现异常

Reppy behaving strangely with certain entries

我正在用 google.com.robots.txt 测试 Reppy,但对于某些条目,它有点任性。

以下是:
Disallow: /alerts/ , 必须在这里得到一个 False.
Allow: /alerts/$ , 必须在这里得到一个 True.

我得到第一个条目 True 和第二个条目 False。 同时,我得到了其余条目的正确结果。

>>> import reppy  
>>> from reppy.cache import RobotsCache  
>>> robots = RobotsCache()  
>>> rules = robots.fetch("http://google.com")  
>>> rules.allowed('/search', 't')  
False    
>>> rules.allowed('/search/about', 't')
True

#While things are right above, they are unexpected below

>>> rules.allowed('/alerts/', 't')
True    # FALSE is expected here
>>> rules.allowed('/alerts/$', 't')
False   # TRUE is expected here
>>>      

如果有人给我提示,我将不胜感激。

$不是文字$,而是"end of the URL".

看看this documentation:

Google, Bing, Yahoo, and Ask support a limited form of "wildcards" for path values. These are:

  • * designates 0 or more instances of any valid character
  • $ designates the end of the URL

所以这些规则:

Allow: /alerts/manage
Allow: /alerts/remove
Disallow: /alerts/
Allow: /alerts/$

意味着您可以访问 /alerts/manage/alerts/remove/alerts/,但不能访问 /alerts/ 的任何其他子项(例如 /alerts/foo)。所以您看到的结果是准确的:

这个 returns 正确,因为它匹配 Allow: /alerts/$:

>>> rules.allowed('/alerts/', 't')
True

这个 returns 错误,因为它匹配 Disallow: /alerts/:

>>> rules.allowed('/alerts/$', 't')
False