我正在从事的项目有多个stag和dev域,最终将具有实际的生产环境。我创建了两个robots.txt
文件:
robots.txt
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]
任何帮助和/或建议将不胜感激。
答案 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: /
。