2014-01-26 107 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约为爬行)。
  • 更改您网站的网址设计。