2013-08-15 4 views
0

В моем файле robots.txt:Robots.txt Команда «Разрешить»?

Disallow: /account 
Allow: /account/ 

В моем сайте есть страница в /account, который будет доступен только для кого-то вошел в систему, но затем, чтобы увидеть страницу профиля другого пользователя, вы должны пойти /account/username. Поэтому я хочу, чтобы robots.txt запретил одну страницу /account, но разрешить каталоги. Работает ли эта настройка?

Следствие: Disallow: /account также запрещает каталог /account/ или я просто трачу свое время на то, что явным образом разрешаю это?

ответ

3

Несколько вещей, чтобы не упустить здесь.

Во-первых, как сказал @plasticinsect в своем ответе, выигрывает самое конкретное правило. Для GoogleBot. Тем не менее, другие боты используют правило из исходного протокола robots.txt, в котором говорится, что директивы обрабатываются в последовательном порядке - порядок, который они отображаются в файле robots.txt. Эти боты увидели бы Запрет и остановились.

Как минимум, вы должны поменять порядок разрешений и запретов.

Кроме того, иногда возникают разногласия относительно того, являются ли /account и /account/ разными URL-адресами. Если искатель попадает на ваш сайт с http://example.com/account/, robots.txt разрешит его. Вероятно, вы хотите запретить /account/$. Это не остановит все ботов (те, которые не поддерживают маркер конца строки $, игнорируют директиву), но это стоит того.

Учитывая, что я хотел бы предложить:

Disallow: /account/$ 
Allow: /account/ 
Disallow: /account 

Или, если вы просто обеспокоены Googlebot и других крупных поисковых роботов:

Disallow: /account$ 
Disallow: /account/$ 
2

Для робота Google это определенно будет работать. Для других веб-роботов это может быть или не быть, в зависимости от того, как они реализуют robots.txt. Я бы не стал на это рассчитывать.

В соответствии с: https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt,

«На уровне члена группы, в частности, для разрешения и блокирующех директив, наиболее конкретное правило на основе длину [путь] запись будет козырной менее специфичным (короче).

Так как «/ account/'больше, чем«/account », разрешение будет отменять запрет, по крайней мере, на роботе Googlebot.

Это почти наверняка не будет работать на многих других веб-роботах. Исходный стандарт robots.txt даже не включает директиву Allow. Даже если робот поддерживает «Разрешить», нет никакой гарантии, что он определяет приоритеты так же, как Google. Итак, если вы действительно заботитесь о Google, идите на это. Если вам нужно, чтобы это работало для других роботов, вам может понадобиться найти другое решение, возможно, метатеги роботов или заголовок X-Robots-Tag.

Чтобы ответить на ваш вопрос, «Запретить:/account» будет блокировать любой файл или путь, начинающийся с «/ account», включая «/ account/user», так что да, вам нужно разрешить.

Смежные вопросы