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

时间:2018-10-30 17:24:42

标签: .htaccess mod-rewrite robots.txt

我正在从事的项目有多个stag和dev域,最终将具有实际的生产环境。我创建了两个robots.txt文件:

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

第一个当然是我要在生产环境中运行并允许Google抓取的标准文件。我不希望索引我的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]

任何帮助和/或建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

  • 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(如果不是上述模式不匹配)将导致RewriteRule无条件执行!

因此,这些指令应写为:

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

您最好将这两个条件组合为一个,然后可以完全删除OR标志。在字符类中使用时,无需转义文字点。尾随$是多余的,因为默认情况下正则表达式是贪婪的。

  

此文件仅包含Disallow /

我认为这只是您输入的错字,因为您缺少:。应该是Disallow: /