如何为所有我自己的子域服务robots.txt,而不是Apache上的其他主机?

我们开发网站,并将QA环境托pipe在与生产环境相同的服务器上。 我想为所有质量检查站点提供特定的robots.txt,但不是针对生产站点。 我们有很多站点,所以我不想更新数百个虚拟主机configuration块。 QA站点很容易从域名和目录中识别.QA和生产站点分为两个不同的目录。 所有质量检查站点都托pipe在* .qa.mycompany.com下。

生产示例:host:example.org docroot:/var/www/production/example.org

示例QA:host:example.qa.mycompany.com docroot:/var/www/qa/example.org

有没有办法将Apacheconfiguration为为所有QA站点提供robots.txt,而不需要更新所有QA vhostconfiguration?

你可以添加这个

 <Directory "/var/www/qa/*"> Redirect permanent robots.txt http://example.com/qa_robots.txt </Directory> 

比你可以把你的qa-robots.txt放在全局主机上的publicaayay上,Directory-block应该redirect到所有的/ qa /文件夹。

search引擎也应该遵循这个redirect。

你也可以添加,而不是redirect

ErrorDocument 404“/var/www/qa_robots.txt”

但是,这将发送404错误代码我不知道如何searchbots reckt在这个。 我想也可以用mod_rewrite和一个匹配的RewriteCond来做到这一点

你可以用mod_alias & If语句来完成 ,把它添加到你的服务器conf中:

 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,则可能无法解决您的问题

因为你不能在x2F / in语句x2F /replace为x2F

我没有testing它,但它应该理论上的作品。