2016-04-19 11 views
0

私はgoogle.com.robots.txtでReppyをテストしていましたが、特定のエントリでは少しばかげてしまいました。Reppyが特定のエントリで不思議に振る舞う

以下は、
Disallow: /alerts/です。ここではFalseを指定する必要があります。
Allow: /alerts/$は、ここでTrueを取得する必要があります。

第1回はTrue、第2回は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 
>>>  

誰かが私にこれを修正するためのヒントを教えてくれたら、私は感謝します。

答えて

0

$は、$の文字列ではなく、「URLの末尾」を意味します。

グーグル、ビング、ヤフー、および パス値については、「ワイルドカード」の限定された形をサポートして確認する:

this documentationを見てみましょう。これらは次のとおりである:

  • *は、任意の有効な文字
  • $の0以上のインスタンスを指定したURLの末尾

したがって、これらのルールを指定:

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

ことを意味します/alerts/manage/alerts/remove、にアクセスできますであり、その他の子は/alerts/(たとえば、/alerts/foo)ではありません。だから、あなたが見ている結果が正確である:それはAllow: /alerts/$一致するため

これがtrueを返す:それはDisallow: /alerts/一致するため

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

これはfalseを返します。

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

ありがとうございます!それは完全に理解されています。 – abT

関連する問題