Como servir o robots.txt para todos os meus próprios subdomínios, mas não para outros hosts no Apache?

Como servir o robots.txt para todos os meus próprios subdomínios, mas não para outros hosts no Apache?

Desenvolvemos websites e hospedamos o ambiente de QA no mesmo servidor do ambiente de produção. Quero servir um robots.txt específico para todos os sites de controle de qualidade, mas não para os sites de produção. Nós temos umamuitode sites, então não quero atualizar centenas de blocos de configuração vhost. Os sites de controle de qualidade são facilmente identificáveis ​​pelo nome de domínio e pelo diretório em que estão. Os sites de controle de qualidade e de produção são agrupados em dois diretórios diferentes. Todos os sites de controle de qualidade estão hospedados em *.qa.mycompany.com.

Exemplo de produção: host: example.org docroot: /var/www/production/example.org

Exemplo de controle de qualidade: host: example.qa.mycompany.com docroot: /var/www/qa/example.org

Existe alguma maneira de configurar o Apache para servir um robots.txt para todos os sites de controle de qualidade, mas não para os sites de produção, sem precisar atualizar todas as configurações do vhost de controle de qualidade?

Responder1

Você poderia adicionar isso

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

Do que você poderia colocar seu qa-robots.txt em uma área pública em um host global, o bloco de diretório deve ser redirecionado para ele para todas as pastas /qa/.

Os mecanismos de busca também devem seguir esse redirecionamento.

Em vez de redirecionamento, você também pode adicionar

Documento de erro 404 "/var/www/qa_robots.txt"

Mas isso enviará um código de erro 404. Não tenho certeza de como os searchbots reagiram a isso. Acho que também poderia haver uma maneira de fazer isso commod_rewritee uma correspondênciaRewriteCond

Responder2

Você pode fazer isso commod_alias&Declaração se, adicione isto ao seu servidor 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>

Se a instrução estiver disponível apenas no Apache 2.4 e você marcou sua pergunta como 2.2 e 2.4 ... então isso pode não resolver seu problema se você estiver usando o Apache 2.2

Como você não pode escapar /na instrução if, /são substituídos porx2F

Não testei, mas teoricamente deveria funcionar.

informação relacionada