We develop websites and we host the QA environment on the same server as the production environment. I want to serve a specific robots.txt for all QA sites but not for the production sites. We have a lot of sites so I do not want to manyallu update hundreds of vhost configuration blocks. The QA sites are easily identifyable from both the domain name and the directory they are in. QA and production sites are grouped in two different directories. All QA sites are hosted under *.qa.mycompany.com.
Example production: host: example.org docroot: /var/www/production/example.org
Example QA: host: example.qa.mycompany.com docroot: /var/www/qa/example.org
Is there any way to configure Apache to serve a robots.txt for all QA sites but not the production sites without having to update all QA vhost configs?
You could add this
Than you could put your qa-robots.txt on a public areay on a global host, the Directory-block should to a redirect to it for all /qa/ folders.
Search engines should also follow this redirection.
Instead of redirection you can also add
ErrorDocument 404 "/var/www/qa_robots.txt"
But this will send an 404 errorcode I´m not sure how searchbots reackt on this. I think there could also be a way to do this with mod_rewrite and a matching
RewriteCond
You can do it with mod_alias & If statement, add this to your server conf :
If statement is only available on Apache 2.4, and you tagged your question as 2.2 & 2.4 ... so it may not solve your trouble if you are using Apache 2.2
As you can't escap
/
in if statement,/
are replaced byx2F
I didn't tested it, but it should theoricaly works.