.htaccess - 如何确认正在使用正确的 Robots.txt 文件?
问题描述
对于我正在从事的项目,我有各种 stag 和 dev 域,最终将拥有实际的生产环境。我创建了两个robots.txt
文件:
robots.txt
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]
任何帮助和/或建议将不胜感激。
解决方案
要检查它是否按预期工作,您只需提出必要的请求。例如:
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: /
。
推荐阅读
- python - 是否有计算产品的有效函数?
- ios - 如何在以编程方式创建实体时设置 NSManagedObjectModel 的配置。
- xcode - Xcode 10 中没有 Objects Library 按钮,只有 Snippets Library
- haskell - 如何在 Yesod 中为 selectField 构建预选选项?
- javascript - 检查至少两个数组值是否相等
- javascript - 理解 javascript 分页数学问题
- c# - 使用 .Net Core 渲染网页,类似于 Node 和 Express 以及视图引擎
- pandas - Pandas - 使用 groupby 扩展均值
- c++ - 需要一个使用 dht_put_item 和 libtorrent 的示例
- laravel - Laravel 中的 MVC 考虑