Como criar um arquivo robots.txt para todos os domínios no servidor Apache

10

Temos uma configuração de servidor da Web de desenvolvimento XAMPP Apache com hosts virtuais e queremos impedir que os serviços de rastreamento rastreiem todos os nossos sites. Isso é feito facilmente com um arquivo robots.txt. No entanto, preferimos não incluir um robots.txt não permitido em todos os vhost e depois removê-lo quando formos ao vivo com o site em outro servidor.

Existe uma maneira de um arquivo de configuração do apache reescrever todas as solicitações para robots.txt em todos os vhosts em um único arquivo robots.txt?

Se sim, você poderia me dar um exemplo? Eu acho que seria algo assim:

RewriteEngine On
RewriteRule  .*robots\.txt$         C:\xampp\vhosts\override-robots.txt [L] 

Obrigado!

Michael Berkompas
fonte
O robots.txt não é obrigatório e alguns rastreadores o ignoram. Não deve ser visto como um recurso de segurança. Se você deseja ocultar seu site até que esteja pronto para o público, adicione autenticação.
Mircea Vutcovici

Respostas:

25

O Apache mod_alias foi projetado para isso e está disponível no sistema principal do Apache, e pode ser configurado em um local com quase nenhuma sobrecarga de processamento, ao contrário do mod_rewrite.

Alias /robots.txt C:/xampp/vhosts/override-robots.txt

Com essa linha no arquivo apache2.conf, fora de todos os vhost, http://example.com/robots.txt - em qualquer site em que ele atenda, será gerado o arquivo fornecido.

Alister Bulman
fonte
Este. Coloque um Aliasem cada <VirtualHost>bloco. +1.
Steven segunda-feira
Obrigado! Isso funcionou perfeitamente. Eu sabia que havia uma solução fácil ...
Michael Berkompas
Se você quiser em cada host virtual, não precisará colocá-lo em todos eles. Ele pode ir em um nível global, como o alias padrão / manual faz fora da caixa.
Alister Bulman
Obrigado pela solução, apesar de ver C: / lá me deixa mal do estômago sabendo que há outro servidor Windows por aí :) Coloquei minha edição no meu arquivo modules.conf ou no mods-enabled / alias.conf da seguinte maneira: Alias /robots.txt /var/www/robots.txt
unc0nnected
1
Para garantir que esse arquivo esteja disponível mesmo quando outros controles de acesso o bloqueiam, coloque o alias e <Location "/robots.txt"> Allow from all </Location>imediatamente depois dele dentro do main<IfModule alias_module>
Junf
1

Coloque seu robots.txtarquivo global comum em algum lugar do sistema de arquivos do servidor, acessível ao processo apache. Para fins de ilustração, presumo que esteja /srv/robots.txt.

Em seguida, para configurar mod_rewritepara servir esse arquivo aos clientes que o solicitam, coloque as seguintes regras no <VirtualHost>bloco de configuração de cada vhost :

RewriteEngine on
RewriteRule ^/robots.txt$ /srv/robots.txt [NC, L]

Se você estiver colocando as regras de reescrita em .htaccessarquivos por diretório, em vez de <VirtualHost>blocos, precisará modificar um pouco as regras:

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]
Steven segunda-feira
fonte
Você poderia explicar isso "Coloque seu arquivo robots.txt global comum em algum lugar do sistema de arquivos do seu servidor que seja acessível ao processo apache. Para fins de ilustração, presumo que ele esteja em /srv/robots.txt." em mais detalhes? Eu preciso saber o que você quer dizer com criar um diretório disponível para o processo apache?
Michael Berkompas
Cada site está contido em uma pasta como testsite.int.devcsd.com em C: \ xampp \ vhosts
Michael Berkompas
@ Michael: Não se preocupe com esse mod_rewritetruque muito complicado . Use Aliascomo sugerido por Alister.
Steven segunda-feira
0

Não tenho certeza se você está executando o XAMPP no Linux ou não, mas se estiver, você pode criar um link simbólico de todos os hosts virtuais para o mesmo arquivo robots.txt, mas é necessário garantir que sua configuração do Apache para cada host virtual seja permitido seguir links simbólicos (de acordo com a <Directory>diretiva Options FollowSymLinks).

gravyface
fonte
Prefiro não ter que editar todas as declarações de vhost. Existem mais de 30 ... Além disso, quero que seja um passeio automático, para que eu não precise fazer nada quando criar um novo vhost.
Michael Berkompas
Michael, basta usar o sed para fazer uma edição em massa, coisas bem fáceis, você definitivamente não precisa fazer manualmente. Veja como fazê-lo aqui na parte inferior: blog.netflowdevelopments.com/2012/10/11/…
unc0nnected
0

Abordagem diferente para solução.

Eu hospedo vários (mais de 300) hosts virtuais no meu ambiente de cluster. Para proteger meus servidores contra ataques de rastreadores, defino o Atraso de rastreamento por 10 segundos.

No entanto, não consigo impor todos os meus clientes com uma configuração robots.txt fixa. Permito que meus clientes usem seu próprio robots.txt, se desejarem.

O módulo de reescrita primeiro verifica se o arquivo existe. Se não existir, os módulos reescrevem para minha configuração padrão. Exemplo de código abaixo ...

Para manter a reescrita interna, o alias deve ser usado. Em vez de definir um novo alias que pode causar alguns conflitos do lado do usuário, localizei o meu robots.txt dentro da pasta / APACHE / error / que já possui um alias como configuração padrão.

<Directory /HOSTING/*/*/public_html>
        Options SymLinksIfOwnerMatch
        <Files robots.txt>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule (.*) - [L]
                RewriteRule (.*) /error/robots.txt [L]
        </Files>
</Directory>
aesnak
fonte