如何确认使用了正确的Robots.txt文件



我正在处理的项目有各种stag和dev域,最终将拥有实际的生产环境。我已经创建了两个robots.txt文件:

  1. robots.txt
  2. robots-nocrawl.txt

第一个当然是我想在生产环境中运行并允许谷歌抓取的标准文件。我不希望我的dev和stag域被索引,所以我希望在访问这些域时激发robots-nocrawl.txt,这个文件只有Disallow /

我已经添加了所需的代码.htaccess文件,请参见下文,并将更改移动到我的开发环境中。我可以看到nocrawl文件在那里,但调出了URL,但当我在dev/stag中时,如何检查/确认robots-nocrawl.txt文件是正在使用的文件?我找不到测试这个的方法。

RewriteCond %{HTTP_HOST} ^stag.mollywade.([a-z.]+)$ [OR]
RewriteCond %{HTTP_HOST} ^dev.mollywade.([a-z.]+)$ [OR]
RewriteRule ^/robots.txt$  /robots_nocrawl.txt [L]

如有任何帮助和/或建议,我们将不胜感激。

要检查它是否按预期工作,只需发出必要的请求。例如:

  • example.com/robots.txt应该返回robots.txt的内容
  • stag.example.com/robots.txt应该返回robots_nocrawl.txt的内容
  • dev.example.com/robots.txt应该返回robots_nocrawl.txt的内容

但是,您当前的.htaccess文件中有几个关键错误,这些错误将阻止此操作:

  • RewriteRule模式^/robots.txt$在每个目录的.htaccess上下文中永远不会匹配。不应该有斜杠前缀。这应该是^robots.txt$

  • 您有OR'd这两个条件,这将(如果不是因为上面的模式不匹配(导致RewriteRule无条件执行!

因此,这些指令应写成:

RewriteCond %{HTTP_HOST} ^(stag|dev).mollywade.([a-z.]+)
RewriteRule ^robots.txt$  /robots_nocrawl.txt [L]

您不妨将这两个条件合并为一个条件,然后可以完全删除OR标志。在字符类中使用时,不需要转义文字点。尾部的$是多余的,因为regex在默认情况下是贪婪的。

此文件仅具有Disallow /

我认为这只是你问题中的一个拼写错误,因为你错过了一个:。它应该是Disallow: /

最新更新