Я планирую добавить кучу агрегированных списков страниц в свои карты сайта, которые я не хочу, чтобы посторонним было слишком легко просматривать их. Могу ли я защитить свой sitemap.xml, чтобы его могли загрузить только поисковые системы?
Установить брандмауэр? Я использую IIS6.
Как узнать, что является поисковой системой, а что нет? Пользовательские агенты можно заменить, но если оставить в стороне, если вы столкнетесь с неизвестным пользовательским агентом, знаете ли вы, браузер это или поисковая система? Существуют сотни компаний с поисковыми системами, поэтому простого разрешения IP-адресов от Google, Bing и др. Здесь вряд ли достаточно.
Попытка скрыть карты сайта от поисковых систем - это форма защиты через неясность, и любой, кому это небезразлично, не будет заблокирован какими-либо разумными попытками их остановить.
Как заметил Деннис, подделать это будет легко. Кроме того, будет сложно убедиться, что вы случайно не исключили поисковую систему.
Допустим, вы хотите разрешить Google, Yahoo и Bing сканировать ваш сайт. Таким образом, вы разрешаете доступ к карте сайта только для связанных пользовательских агентов. Теперь есть две проблемы:
Что делать, если служба меняет пользовательский агент? Что делать, если вам нужно включить другую услугу? Теперь вам нужно переписать свои правила, прежде чем служба сможет увидеть карту сайта.
Почему бы мне, как специалисту по работе с сайтами, просто мошенническим образом не сообщить, что я паук Google? Указание пользовательского агента возможно (и легко) на нескольких языках, а также во многих браузерах, таких как FireFox и Safari.
Итак, краткий ответ: «Нет, но вы можете усложнить задачу. Но это ложится на вас бременем».
Вне моей головы вы могли бы переписать правила, которые перенаправляли запросы на sitemap.xml на страницу 404, если они не соответствуют правильному пользовательскому агенту или IP-адресам.
У меня нет такого правила перезаписи, но я на 99% уверен, что это возможно.