漂亮的URL和robots.txt

时间:2014-01-26 19:05:19

标签: php mod-rewrite laravel robots.txt pretty-urls

假设我们使用包含mod_rewrite或类似内容的漂亮网址,并且有以下两条路线:

  • /page
  • /page-two

现在我们要禁止机器人抓取第一条路线(/page)。

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

禁止(http://www.robotstxt.org/orig.html):

     

...例如,Disallow:/ help不允许/help.html和/help/index.html,而Disallow:/ help /将禁止/help/index.html但允许/help.html.

所以上面的robots.txt示例也不允许/page-two,对吗?

完成这项工作的正确方法是什么?

可能是以下代码吗?

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

3 个答案:

答案 0 :(得分:0)

来自Google's robots.txt specifications

  

在组成员级别,特别是对于允许和禁止指令,基于[path]条目长度的最具体规则将胜过不太具体(较短)的规则。带有通配符的规则的优先顺序是未定义的。

这意味着您定义它们的顺序无关紧要。在你的情况下,这应该工作:

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

更清楚:每个网址都与所有路径匹配。 /page将与/page/123/page/subdirectory/123/whateverishere.html/page-123/page匹配。将使用具有匹配的最长路径的指令。如果/page/page-都匹配,则使用/page-的指令(允许)。如果/page匹配,但/page-不匹配,则使用/page的指令(Disallow)。如果/page/page-都不匹配,则默认为(允许)。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  

所以上面的robots.txt示例也不允许/page-two,对吗?

正确。

  

完成这项工作的正确方法是什么?

original robots.txt specification中,这根本不可能。

(请注意,您的上一个示例不会阻止/page,因为不允许的网址必须以/page/开头(包括最后一个斜杠)。)

一些解析器了解Allow和/或通配符,它​​们可用于解决您的问题,但两者都不是原始规范的一部分。如果您只考虑某些机器人,请查看他们的文档,了解他们支持的robots.txt的“扩展程序”类型。

备选方案:

  • 使用HTTP标头X-Robots-Tag
  • meta元素与robots名称一起使用(但请注意:noindex是关于索引,而robots.txt的Disallow是关于爬行)。
  • 更改您网站的网址设计。