2014-01-26 2 views
0

Давайте предположим, что мы используем довольно URL-адреса с mod_rewrite или нечто подобное, и имеют следующие два пути:Довольно URL-адреса и robots.txt

  • /page
  • /page-two

Теперь мы хотим запретить только первый маршрут (/page) должен выполняться роботами.

# robots.txt 
User-agent: * 
Disallow: /page 

Disallow (http://www.robotstxt.org/orig.html):

... Например, Disallow:/помощь как /help.html запрещает и /help/index.html, в то время как Disallow:/помощь/бы запретить /help/index.html, но разрешить /help.html.

Таким образом, приведенный выше пример robots.txt не разрешает /page-two тоже, правильно?

Каков правильный способ сделать это?

Может быть, следующий код?

# robots.txt 
User-agent: * 
Disallow: /page/ 
+2

'Disallow:/page' does * not * disallow'/page-two'. –

+0

Вы уверены в этом (учитывая цитату robotstxt.org в моем вопросе)? : -O – Martin

+0

Спасибо, Джозеф! :-) – Martin

ответ

0

От Google's robots.txt specifications:

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

Это значит, что это не имеет значения, в каком порядке вы их определяете. В вашем случае это должно работать:

User-agent: * 
Disallow: /page 
Allow: /page- 

Чтобы сделать его более ясным: Каждый URL подобран против всех путей. /page будет соответствовать /page/123, /page/subdirectory/123/whateverishere.html, /page-123 и /page. Будет использоваться директива с самым длинным путем, который будет соответствовать. Если совпадают как /page, так и /page-, тогда используется директива для /page- (Разрешить). Если /page соответствует, но /page- не соответствует, применяется директива для /page (Disallow). Если ни /page, ни /page- не совпадают, предполагается значение по умолчанию (Разрешить).

+0

Но это не устраивает мои потребности, если второй маршрут был '/ pagetwo' правильным? Будет ли это «Разрешить:/page *»? – Martin

+0

№ '/ page *' будет соответствовать точно таким же URL-адресам, что и '/ page'. См. Ссылку. – Sumurai8

+0

Спасибо, теперь я понял :-) – Martin

0
User-agent: * 
Allow: /page-two 
Disallow: /page 
+1

Пожалуйста, не отправляйте ответы только на код. Они вряд ли смогут понять, что проблема, и вообще бесполезны для людей, приезжающих сюда с той же проблемой. – Sumurai8

0

Так выше robots.txt пример запрещая /page-two тоже, верно?

Исправить.

Каков правильный способ сделать это?

В original robots.txt specification это невозможно.

(Обратите внимание, что последний пример не блокирует /page, как запрещенные URL-адреса должны начинаться с /page/ (включая последний слэш).)

Некоторые парсеры понимают Allow и/или символы, которые могут быть использованы для решения вашей проблемы, но оба они не являются частью первоначальной спецификации. Если у вас есть только определенные боты, просмотрите их документацию, чтобы узнать, какие «расширения» для robots.txt они поддерживают.

Альтернативы:

  • Используйте в HTTP заголовок X-Robots-Tag.
  • Используйте meta элемент с именем robots (но обратите внимание: noindex о индексации, а robots.txt-х Disallow о ползет).
  • Изменение дизайна URL вашего сайта.
Смежные вопросы