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.
"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."