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

9

Nós temos uma configuração de servidor web de desenvolvimento do XAMPP Apache com hosts virtuais e queremos impedir que os servidores rastreiem todos os nossos sites. Isso é feito facilmente com um arquivo robots.txt. No entanto, preferimos não incluir um arquivo robots.txt desautorizado em cada vhost e, em seguida, removê-lo quando formos exibir o site em outro servidor.

Existe uma maneira com um arquivo de configuração do apache para reescrever todos os pedidos de robots.txt em todos os vhosts para 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!

    
por Michael Berkompas 16.12.2010 / 20:05

4 respostas

25

O Apache mod_alias é projetado para isso e está disponível no sistema Apache principal e pode ser definido em um lugar 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 vhosts, o link - em qualquer site que seja exibido, será exibido o arquivo fornecido.

    
por 16.12.2010 / 21:55
1

Coloque o seu arquivo global comum robots.txt em algum lugar no sistema de arquivos do seu servidor que seja acessível ao processo do apache. Para fins de ilustração, vou assumir que está em /srv/robots.txt .

Em seguida, para configurar mod_rewrite para exibir esse arquivo para os clientes que o solicitarem, coloque as seguintes regras no bloco <VirtualHost> config de cada vhost:

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

Se você estiver colocando as regras de reconfiguração em arquivos .htaccess por diretório, em vez de <VirtualHost> blocks, será necessário modificar ligeiramente as regras:

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]
    
por 16.12.2010 / 21:52
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 você precisa ter certeza de que sua configuração do Apache para cada host virtual pode seguir links simbólicos (na <Directory> da diretiva Options FollowSymLinks ).

    
por 16.12.2010 / 21:33
0

Diferente abordagem para solução.

Eu hospedo vários (mais de 300) virtualhost no meu ambiente de cluster. Para proteger meus servidores de serem prejudicados por rastreadores, defino o atraso de rastreamento por 10 segundos.

No entanto, não posso impor todos os meus clientes com uma configuração fixa do robots.txt. Eu deixo meus clientes usarem o próprio robots.txt deles se quiserem.

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 arquivo 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>
    
por 29.08.2016 / 14:05