Роботы: блокировать /язык/страницу из индекса, но сохранять /страницу


Моя структура URL-адресов выглядит примерно так:

  • /group1/
  • /group2/
  • /group3/

Group3 ( и это подстраницы) также доступны на другом языке по следующим URL-адресам. К этому URL-адресу был добавлен префикс lang:

  • /lang/group3/

К сожалению, обновление CMS привело к тому, что следующие URL-адреса теперь считаются допустимыми, даже если они не были переведено.

  • /lang/group1
  • /lang/group2

Я хотел бы разрешить /group3 и /lang/group3, но заблокировать /lang/group* из индекса.

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

Author: Zistoloen, 2015-01-12

1 answers

Если у вас буквально есть только несколько "групп", которые вы хотите заблокировать, то вы бы сделали что-то вроде:

User-agent: *
Disallow: /lang/group1
Disallow: /lang/group2

...и все остальное было бы разрешено. Это будет работать со всеми роботами, которые подчиняются первоначальному "стандарту". Или вы можете заблокировать все группы (group1, group2, и т.д.) и сделайте исключение для "группы 3", например:

User-agent: *
Disallow: /lang/group
Allow: /lang/group3

Обратите внимание, что директива Allow не является частью первоначального "стандарта", но имеет универсальную поддержку. URL-путь - это просто префикс.

ОДНАКО я бы не стал использовать robots.txt чтобы заблокировать "просматриваемые" страницы. А как насчет случайных посетителей? А плохие боты? И robots.txt не препятствует индексированию страниц, если на них случайно установлены ссылки. Я бы использовал .htaccess или конфигурацию вашего сервера, чтобы фактически блокировать весь трафик на эти URL-адреса. Что-то вроде следующего в .htaccess:

RewriteEngine On
RewriteRule ^lang/group[12] - [R=404]

Отвечать 404 на все запросы к этим недопустимым URL-адресам. Или используйте флаг F, чтобы ответить 403 "Запрещено".

 2
Author: MrWhite, 2015-01-12 12:30:26