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