Como você cria um único arquivo robots.txt para todos os sites em uma instância do IIS

6

Eu quero criar um único arquivo robots.txt e tê-lo servido para todos os sites na minha instância do IIS (7 neste caso).

Eu não quero ter que configurar nada em nenhum site individual.

Como posso fazer isso?

    
por Tim Erickson 28.07.2010 / 23:06

4 respostas

4

Isso pode ser feito usando o módulo Url Rewrite para IIS.

Crie estas pastas:

\Inetpub\wwwroot\allsites
\Inetpub\wwwroot\site1
\Inetpub\wwwroot\site2

Crie 2 sites usando o caminho do site # acima. Dentro de cada site, crie um diretório virtual chamado allsites apontando para \ Inetpub \ wwwroot \ allsites

Em seguida, crie esses arquivos. Cada um deve ter um conteúdo exclusivo para verificar se isso está funcionando durante o teste:

\Inetpub\wwwroot\allsites\robots.txt
\Inetpub\wwwroot\site2\robots.txt

Instale o módulo Url Rewrite para o IIS, se ainda não o fez.

Coloque isso no web.config de cada site:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Rewrite robots.txt">
                    <match url="^(robots.txt)$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/allsites/robots.txt" />
                </rule>
            </rules>
        </rewrite>
        <directoryBrowse enabled="true" />
    </system.webServer>
</configuration>

O que essa regra faz é corresponder a um URL, como http://mysite/robots.txt , e reescrevê-la para solicitar http://mysite/allsites/robots.txt instead . No entanto, ele só fará isso se o arquivo robots.txt não existir no sistema de arquivos nesse local.

Assim, você pode colocar um robots.txt comum em todos os sites, mas substituí-lo em qualquer site desejado, colocando um robots.txt personalizado na raiz do site.

Este não é um redirecionamento. O rastreador da Web remoto não terá idéia de que o IIS está fazendo isso nos bastidores.

Atualização:

Eu não fiz isso na minha configuração, mas o módulo Url Rewrite suporta regras globais que podem ser definidas no nível do servidor. Então você não precisa definir isso para cada site.

link

"Global and distributed rewrite rules. URL Rewrite uses global rules to define server-wide URL rewriting logic. These rules are defined within the applicationHost.config file, and they supercede rules configured at lower levels in the configuration hierarchy. The module also uses distributed rules to define URL rewrite logic specific to a particular configuration scope. This type of rule can be defined on any configuration level by using Web.config files."

    
por 29.07.2010 / 23:49
5

Uma alternativa ao arquivo robots.txt é o cabeçalho HTTP X-Robots-Tag , conforme detalhado aqui:

link

Que pode ser aplicado em todo o servidor no IIS, adicionando um cabeçalho HTTP personalizado

IIS 6: clique com o botão direito na pasta "Web Sites" > Propriedades > Cabeçalhos HTTP

IIS 7: na tela inicial do servidor, clique em Cabeçalhos de solicitação HTTP, escolha "adicionar"

Ao contrário do robots.txt, isso parece ser de propriedade do Google e, assim como o robots.txt, só é útil em relação a indexadores de mecanismos de pesquisa "compatíveis".

    
por 08.12.2010 / 17:55
1

Você pode usar links simbólicos? Isso funcionaria?

link

    
por 29.07.2010 / 02:27
0

Infelizmente, como o arquivo robots.txt deve estar na raiz do site, não há uma maneira simples de pensar em fazer o que você deseja. Se fosse algo que estivesse em um diretório, você poderia configurar um diretório virtual em cada site, mas isso não é aplicável ao arquivo robots.txt.

Portanto, antes de escrever um aplicativo / serviço que copiaria um arquivo robots.txt em cada site periodicamente, você poderia configurar uma regra de reconfiguração em cada site que reconfigurasse (não redirecionasse) os ~ / robots solicitação de .txt para servir um arquivo de um diretório virtual, ou possivelmente uma URL diferente.

    
por 29.07.2010 / 00:46