Como veicular robots.txt diferente para http e https no mesmo site?

11

Eu tenho um site pequeno que é servido pelo Apache (não posso colocar o Nginx na frente nem mudar o Apache para nada), e ele está configurado para servir o mesmo site por http e https (não há redirecionamentos http-> https, então até agora, as versões http e https são veiculadas em paralelo).

O que eu preciso é configurar .htaccesso mesmo URI via http e via https para servir arquivos de texto diferentes?

Como http://example.com/proto.txtdiz "O site acabou por http", enquanto https://example.com/proto.txtdizia "O site foi exibido por https".

Kevin M
fonte
Não tenha tempo para verificar a maneira exata de escrever isso (e, portanto, apenas um comentário, não uma resposta), mas outra opção se você não quiser ou não puder alterar a configuração principal do Apache, é usar um RewriteRuleem sua .htaccesscondição de veiculação em https.
jcaron
@dcaron, este é exatamente o que eu preciso, eu simplesmente não consigo descobrir como fazer isso exatamente, e precisa de um conselho ou (melhor) trecho de código para fazer isso :)
Kevin M
Seus sites http e https estão em <VirtualHost>s diferentes . Então, basta configurar um robots.txt diferente em um deles. Em torno de:RewriteRule ^/robots.txt$ /path/to/alternative/robots.txt [L]
peterh - Reinstala Monica 12/12

Respostas:

19

Use um alias

Crie dois arquivos, robots.txt e robots_http.txt e adicione-os ao seu http VirtualHost:

Alias "/robots.txt" "/path/to/documentroot/robots_http.txt"
Gerald Schneider
fonte
Não é possível modificar as configurações do vhost, só pode editar .htaccess, este é o truque.
Kevin M
2

Se você não puder ou não alterar a configuração "principal" do Apache, mas precisar fazê-lo em um .htaccessarquivo, poderá usar a RewriteRulecom a RewriteCondque verifica HTTPS.

Algo ao longo das linhas de:

RewriteEngine On

RewriteCond %{HTTPS} "on"
RewriteRule robots.txt robots_https.txt [L]

provavelmente deve funcionar (eu não testei).

Observe que isso se baseia no Apache executando a terminação HTTPS. Se a finalização do HTTPS for feita em um proxy reverso antes dele, a condição provavelmente será diferente (e dependerá da configuração do proxy reverso e do Apache).

jcaron
fonte