Как создать один файл 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.