2014-01-26 104 views
0

假設我們使用的是簡潔的URL與mod_rewrite或類似的東西,並有以下兩種途徑:漂亮的URL和robots.txt的

  • /page
  • /page-two

現在,我們要禁止只有第一條路線(/page)被機器人抓取。

# robots.txt 
User-agent: * 
Disallow: /page 

不允許(http://www.robotstxt.org/orig.html):

...例如,不允許:/幫助不允許既/help.html和/help/index.html,而不允許:/幫助/將不允許/help/index.html,但允許/help.html。

那麼以上robots.txt的例子也是不允許/page-two,對嗎?

完成這件事的正確方法是什麼?

可能是以下代碼?

# robots.txt 
User-agent: * 
Disallow: /page/ 
+2

'禁止:/ page'確實*不*禁止'/ page-two'。 –

+0

你確定那個(考慮我的問題中robotstxt.org的引用)嗎? :-O – Martin

+0

謝謝約瑟夫! :-) – Martin

回答

0

Google's robots.txt specifications

在一組成員的水平,特別是用於允許和禁止指令,最具體的規則基於所述[路徑]項的長度將勝過較不特別(更短)的規則。具有通配符的規則的優先順序未定義。

這意味着它以您定義它們的順序無關緊要。你的情況,這應該工作:

User-agent: * 
Disallow: /page 
Allow: /page- 

爲了更清楚:每個URL是針對所有路徑匹配。 /page將匹配/page/123,/page/subdirectory/123/whateverishere.html,/page-123/page。將使用最長路徑匹配的指令。如果/page/page-都匹配,則使用指令/page-(允許)。如果/page匹配,但/page-不匹配,則使用/page的指令(Disallow)。如果/page/page-都不匹配,則默認爲(允許)。

+0

但是如果第二條路線是'/ pagetwo'的話,這將不適合我的需求嗎?那麼它會是'Allow:/ page *'嗎? – Martin

+0

編號'/ page *'將與'/ page'完全匹配。查看鏈接。 – Sumurai8

+0

謝謝我現在明白了:-) – Martin

0
User-agent: * 
Allow: /page-two 
Disallow: /page 
+1

請不要發佈代碼的答案。他們不太可能讓OP瞭解問題是什麼,對於來到這裏遇到同樣問題的人來說通常是無用的。 – Sumurai8

0

所以上面的robots.txt例子是不允許/page-two過,對嗎?

正確。

完成這件事的正確方法是什麼?

original robots.txt specification中,這是不可能的。

(請注意,您的最後一個例子不會阻止/page,因爲不允許的網址,就必須先從/page/包括最後一個斜線)。)

一些解析器理解Allow和/或通配符,它可以用來解決你的問題,但兩者都不是原始規範的一部分。如果您只考慮某些機器人,請檢查其文檔以查看它們支持的robots.txt的「擴展名」。

備選方案:

  • 使用HTTP頭X-Robots-Tag
  • 使用與robotsmeta元素(但要注意:noindex索引,而的robots.txt的Disallow約爲爬行)。
  • 更改您網站的網址設計。