Как настроить robot.txt, который разрешает только страницу сайта по умолчанию

Скажем, у меня есть сайт на http://example.com/. Мне бы очень хотелось, чтобы боты могли видеть домашнюю страницу, но любая другая страница должна быть заблокирована, поскольку паукам это бессмысленно. Другими словами

http://example.com/ & http://example.com/ должны быть разрешены, но http://example.com/anything и http://example.com/someendpoint.aspx должны быть заблокированы.

Кроме того, было бы здорово, если бы я мог разрешить некоторым строкам запроса проходить через домашнюю страницу: http://example.com/?okparam=true

но не http://example.com/?anythingbutokparam=true

5 ответов

Решение

Итак, после некоторого исследования, вот что я нашел - решение, приемлемое для основных поисковых систем: google, yahoo & msn (я могу найти валидатор здесь):

User-Agent: *
Disallow: /*
Allow: /?okparam=
Allow: /$

Хитрость заключается в использовании $, чтобы отметить конец URL.

Отчет Инструментов Google для веб-мастеров, который запрещает, всегда имеет приоритет над разрешением, поэтому нет простого способа сделать это в robots.txt файл.

Вы могли бы сделать это, поставив noindex,nofollowMETA пометить в HTML каждую страницу, кроме домашней страницы.

Disallow: *
Allow: index.ext

Если я правильно помню, второе предложение должно переопределить первое.

Основные robots.txt:

Disallow: /subdir/

Я не думаю, что вы можете создать выражение "все, кроме корня", вы должны заполнить все подкаталоги.

Ограничение строки запроса также невозможно из robots.txt. Вы должны сделать это в фоновом коде (часть обработки) или, возможно, с помощью правил перезаписи сервера.

Насколько я знаю, не все сканеры поддерживают тег Allow. Одним из возможных решений может быть помещение всего, кроме домашней страницы, в другую папку и запрещение этой папки.

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