Как запретить роботов с первых 185 страниц?


У меня есть веб-сайт, на котором первые 185 страниц являются образцами профилей для демонстрационных целей:

http://example.com/profile/1
...
http://example.com/profile/185

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

User-agent: *
Disallow: /profile/1
Disallow: /profile/2
Disallow: /profile/3
...
Author: Zistoloen, 2014-07-14

3 answers

Невозможно использовать robots.txt (как определено в исходной спецификации ) в вашем случае. Строка, подобная Disallow: /profile/1, заблокирует все URL-адреса, пути к которым начинаются с /profile/1. Таким образом, это относится к профилям 1, 10-19, 100-185 (как и предполагалось), но также и к профилям 186-199, 1000-1999, 10000,... (не предназначено).

Обходной путь: Добавьте символ в качестве суффикса, например /. Таким образом, URL-адреса вашего профиля будут выглядеть так profile/1/, /profile/2/, .... Затем вы могли бы указать Disallow: /profile/1/ и т.д.

Тем не менее, некоторые robots.txt анализаторы поддерживают дополнительные функции, которые не включены в оригинал robots.txt спецификация. Как вы говорите, вы хотите заблокировать страницы для Google, Google придает особое значение символу $:

Чтобы указать соответствие конца URL-адреса, используйте $

Итак, для Google вы могли бы написать Disallow: /profile/1$. Но другие анализаторы, которые не поддерживают эту функцию, будут затем индексировать ваши профили 1-185, поскольку они только ищите URL-адреса, буквально начинающиеся с /profile/1$.

Поэтому, если вы не хотите добавлять суффикс (и явно перечислять все строки Disallow), или если вам не нужно решение только для Google (без суффикса, но все равно явно перечислять строки Disallow), robots.txt это не решение для вас.

Вместо этого вы могли бы использовать:

  • На уровне HTTP: заголовок HTTP X-Robots-Tag

    X-Robots-Tag: noindex
    
  • На уровне HTML: meta элемент с именем robots

    <meta name="robots" content="noindex" />
    

Оба способа поддерживаются Google.

 3
Author: unor, 2014-07-15 12:20:53

Вы могли бы поместить мета-тег роботов на все эти страницы: <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

 5
Author: Mike Scott, 2014-07-14 05:20:40

Вы создаете файл для чтения роботом, поэтому создайте его с помощью робота:

<?php ob_start(); ?>

User-agent: *

<?php
  header("Content-Type:text/plain");
  $limit = 185;

  for($i = 1; $i < $limit ; $i++) 
    echo "Disallow: /profile/$i\n";
 ?>
 # rest of robots.txt here

Или, если вы используете начальные нули (лучшая сортировка), замените строку эхо на:

  printf("Disallow: /profile/%03d\n", $i);

Конечно, robots.php не работает, но для этого и предназначен mod_rewrite: В .htaccess:

RewriteRule robots.txt robots.php [L]
 0
Author: paul, 2014-07-14 13:07:05