我们开发网站,并将 QA 环境与生产环境托管在同一台服务器上。我想为所有 QA 网站提供特定的 robots.txt,但不为生产网站提供。我们有一个很多的站点,所以我不想更新数百个 vhost 配置块。QA 站点很容易从域名和所在目录中识别出来。QA 和生产站点分为两个不同的目录。所有 QA 站点都托管在 *.qa.mycompany.com 下。
示例生产:主机:example.org 文档根目录:/var/www/production/example.org
示例 QA:主机:example.qa.mycompany.com 文档根目录:/var/www/qa/example.org
有没有办法配置 Apache 为所有 QA 站点但不为生产站点提供 robots.txt,而不必更新所有 QA vhost 配置?
答案1
您可以添加
<Directory "/var/www/qa/*">
Redirect permanent robots.txt http://example.com/qa_robots.txt
</Directory>
然后,您可以将 qa-robots.txt 放在全局主机的公共区域,目录块应该将所有 /qa/ 文件夹重定向到它。
搜索引擎也应该遵循此重定向。
除了重定向,您还可以添加
错误文档 404“/var/www/qa_robots.txt”
但这会发送 404 错误代码,我不确定搜索机器人对此有何反应。我认为也可以使用mod_rewrite以及匹配RewriteCond
答案2
你可以这样做mod_alias&If 语句,将其添加到您的服务器配置文件中:
Alias /robots.txt /path/to/robots.txt
Alias /qa_robots.txt /path/to/robots.txt
<If "%{DOCUMENT_ROOT} =~ /(\x2Fvar\x2Fwww\x2Fqa\x2F)/">
RewriteRule ^robots\.txt$ qa_robots.txt
</If>
如果语句仅适用于 Apache 2.4,并且您将问题标记为 2.2 & 2.4 ...因此,如果您使用的是 Apache 2.2,它可能无法解决您的问题
由于您无法/
在 if 语句中退出,因此/
将其替换为x2F
我没有测试过,但理论上它应该可行。