首页 > 解决方案 > 如何确认正在使用正确的 Robots.txt 文件?

问题描述

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

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

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

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

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

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

标签: .htaccessmod-rewriterobots.txt

解决方案


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

  • 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: /


推荐阅读