Я хочу создать один файл robots.txt и использовать его для всех сайтов в моем экземпляре IIS (в данном случае 7).
Я не хочу настраивать что-либо на каком-то отдельном сайте.
Как я могу это сделать?
Альтернативой файлу robots.txt является X-Robots-Tag Заголовок HTTP, как подробно описано здесь:
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, полезен только против «совместимых» индексаторов поисковых систем.
Это можно сделать с помощью модуля Url Rewrite для IIS.
Создайте эти папки:
\Inetpub\wwwroot\allsites
\Inetpub\wwwroot\site1
\Inetpub\wwwroot\site2
Создайте 2 веб-сайта, используя путь сайта № выше. Внутри каждого веб-сайта создайте виртуальный каталог с именем все сайты указывает на \ Inetpub \ wwwroot \ allsites
Затем создайте эти файлы. Каждый должен иметь уникальный контент, чтобы убедиться, что он работает во время тестирования:
\Inetpub\wwwroot\allsites\robots.txt
\Inetpub\wwwroot\site2\robots.txt
Установите модуль Url Rewrite для 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 используются глобальные правила для определения логики перезаписи URL на уровне сервера. Эти правила определены в файле applicationHost.config и заменяют правила, настроенные на более низких уровнях иерархии конфигурации. Модуль также использует распределенные правила. правила для определения логики перезаписи URL, специфичной для конкретной области конфигурации. Этот тип правила может быть определен на любом уровне конфигурации с помощью файлов Web.config ".
Можете ли вы использовать символические ссылки? Это сработает?
http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/
К сожалению, поскольку файл robots.txt должен находиться в корне сайта, я не могу придумать простой способ делать то, что вы хотите. Если бы это было что-то на один каталог ниже, вы могли бы настроить виртуальный каталог на каждом сайте, но это просто не применимо для файла robots.txt.
Следовательно, за исключением написания приложения / службы, которые будут периодически копировать файл robots.txt на каждый сайт, вы можете настроить правило перезаписи на каждом сайте, которое будет перезаписывать (не перенаправлять) запрос ~ / robots.txt. для обслуживания файла из виртуального каталога или, возможно, с другого URL-адреса.