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".
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
我正在用 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".
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