Как создать один файл robots.txt для всех сайтов в экземпляре IIS

Я хочу создать один файл robots.txt и использовать его для всех сайтов в моем экземпляре IIS (в данном случае 7).

Я не хочу ничего настраивать на каком-либо отдельном сайте.

Как я могу это сделать?

4 ответа

Решение

Это можно сделать с помощью модуля перезаписи Url для IIS.

Создайте эти папки:

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

Создайте 2 сайта, используя путь к сайту № выше. Внутри каждого веб-сайта создайте виртуальный каталог с именем allsites, указывающий на \Inetpub\wwwroot\allsites

Далее создайте эти файлы. Каждый должен иметь уникальный контент, чтобы убедиться, что он работает во время тестирования:

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

Установите модуль перезаписи Url для IIS, если вы этого еще не сделали.

Поместите это в web.config каждого веб-сайта:

<?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>

Это правило соответствует URL-адресу, например http://mysite/robots.txtи переписать его на запрос http://mysite/allsites/robots.txt instead, Однако, это будет сделано ТОЛЬКО, если файл robots.txt не существует в файловой системе в этом месте.

Таким образом, вы можете поместить общий файл robots.txt на все сайты, но переопределить его на любом сайте, разместив пользовательский файл robots.txt в корне сайта.

Это не редирект. Удаленный веб-сканер не будет знать, что IIS делает это негласно.

Обновить:

Я не делал этого в своей конфигурации, но модуль Url Rewrite поддерживает глобальные правила, которые могут быть определены на уровне сервера. Таким образом, вам не нужно определять это для каждого сайта.

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

"Глобальные и распределенные правила перезаписи. URL Rewrite использует глобальные правила для определения логики перезаписи URL для всего сервера. Эти правила определены в файле applicationHost.config и заменяют правила, настроенные на более низких уровнях в иерархии конфигурации. Модуль также использует распределенную правила для определения логики перезаписи URL, специфичной для конкретной области конфигурации. Этот тип правила может быть определен на любом уровне конфигурации с помощью файлов Web.config."

Альтернативой файлу robots.txt является HTTP-заголовок X-Robots-Tag, как описано здесь:

http://googleblog.blogspot.com/2007/07/robots-exclusion-protocol-now-with-even.html

Который может применяться на сервере в IIS путем добавления настраиваемого заголовка HTTP

IIS 6: щелкните правой кнопкой мыши папку "Веб-сайты"> Свойства> Заголовки HTTP

IIS 7: на главном экране сервера щелкните заголовки HTTP-запросов, выберите "добавить"

В отличие от robots.txt, это, по-видимому, проприетарно для Google, и, как и robots.txt, полезно только для "совместимых" индексаторов поисковых систем.

Вы можете использовать символические ссылки? Будет ли это работать?

http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/

К сожалению, поскольку файл robots.txt должен находиться в корне сайта, я не могу думать о том, чтобы делать то, что вы хотите. Если это что-то, находящееся в одном каталоге, вы можете настроить виртуальный каталог на каждом сайте, но это не относится к файлу robots.txt.

Следовательно, если не писать приложение / службу, которая будет периодически копировать файл robots.txt на каждый сайт, вы можете настроить правило перезаписи на каждом сайте, которое будет перезаписывать (а не перенаправлять) запрос ~/robots.txt. обслуживать файл из виртуального каталога или, возможно, с другого URL.

Другие вопросы по тегам