Как скрыть от индексации все страницы определенного типа — различия между версиями
Mad grant (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.5''' == Задача == Есть несколько вариантов решения данной задачи: <ul…») |
Alexei (обсуждение | вклад) (Правки Alexei (обсуждение) откачены к версии Mad grant) |
||
(не показано 14 промежуточных версий 2 участников) | |||
Строка 6: | Строка 6: | ||
<ul> | <ul> | ||
− | <li>проставить у каждой страницы галочку "не индексировать"</li> | + | <li>1) проставить у каждой страницы галочку "не индексировать"</li> |
− | <li>проставить галочку "не индексировать" у раздела, чтобы его подразделы скрылись от индексации</li> | + | <li>2) проставить галочку "не индексировать" у раздела, чтобы его подразделы скрылись от индексации</li> |
− | <li>на сайте не выводить ссылки на эти страницы и убрать их из sitemap по статье [[Исключение_из_sitemap.xml_страниц_с_определенным_типом]]</li> | + | <li>3) на сайте не выводить ссылки на эти страницы и убрать их из sitemap по статье [[Исключение_из_sitemap.xml_страниц_с_определенным_типом]]</li> |
</ul> | </ul> | ||
− | + | ||
+ | Но каждый способ имеет значительные минусы: | ||
+ | |||
+ | <ul> | ||
+ | <li>1) если страниц будет очень много, то robots может разрастись до больших размеров, после чего не будет приниматься поисковыми системами</li> | ||
+ | <li>2) если у Вас есть страница товара, у к ней дочерние страницы фотографий, которые нужно скрыть, то Вы же не будете ради этого скрывать сам товар</li> | ||
+ | <li>3) как показывает практика, какими-то способами поисковые системы все равно находят страницы</li> | ||
+ | </ul> | ||
+ | |||
+ | Самый надежный способ что-либо скрыть от индексации, это robots.txt. | ||
+ | |||
+ | == Решение == | ||
+ | |||
+ | Мы сделаем так, чтобы в uri любой добавляемой страницы заданного типа, например страницы фотографии, добавлялось определенная строка, например "noindex", а потом зададим в robots регулярное выражение, | ||
+ | которое закроет от индексации любую страницы, в адресе которой будет содержаться эта строка. | ||
+ | |||
+ | == Пример == | ||
+ | |||
+ | 1) Для изменения uri мы воспользуемся событийной моделью UMI.CMS и напишем обработчик для события systemCreateElement. | ||
+ | |||
+ | Создадим в директории /classes/modules/photoalbum файл custom_events.php следующего содержания: | ||
+ | |||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | new umiEventListener('systemCreateElement', 'photoalbum', 'onCreatePhotoAdmin'); | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | Потом там же создадим файл permissions.custom.php следующего содержания: | ||
+ | |||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | $permissions = array( | ||
+ | 'albums' => array('onCreatePhotoAdmin'), | ||
+ | ); | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | А потому уже добавим в файл __custom.php код обработчика: | ||
+ | |||
+ | <source lang="php"> | ||
+ | public function onCreatePhotoAdmin(iUmiEventPoint $event){ | ||
+ | if($event->getMode() === "after") { | ||
+ | $page = $event->getRef("element"); | ||
+ | $page_type = $page->getHierarchyType(); | ||
+ | if ($page_type->getName() == 'photoalbum' && $page_type->getExt() == 'photo'){ | ||
+ | $old_alt = $page->getAltName(); | ||
+ | $new_alt = 'noindex_' . $old_alt; | ||
+ | $page->setAltName($new_alt); | ||
+ | $page->commit(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | Теперь при создании фотографий через административную панель, к ним адрес будет добавляться строка "noindex_". | ||
+ | При желании, Вы можете написать аналогичные обработчики и для других событий, например на события добавления страницы через импорт. | ||
+ | |||
+ | 2) Теперь перейдем к кастомизации robots.txt | ||
+ | |||
+ | Создадим в корневой директории сайта папку "robots", а в ней файл 1.robots.txt, где 1 это идентификатор Вашего домена, примерно следующего содержания: | ||
+ | |||
+ | <source lang="robots"> | ||
+ | User-Agent: Googlebot | ||
+ | %disallow_umi_pages% | ||
+ | Disallow: /*noindex | ||
+ | |||
+ | User-Agent: Yandex | ||
+ | %disallow_umi_pages% | ||
+ | Disallow: /*noindex | ||
+ | |||
+ | User-Agent: * | ||
+ | %disallow_umi_pages% | ||
+ | Disallow: /*noindex | ||
+ | Host: www.домен_вашего_сайта.ru | ||
+ | Crawl-delay: 3 | ||
+ | |||
+ | Sitemap: http://домен_вашего_сайта/sitemap.xml | ||
+ | </source> | ||
+ | |||
+ | После этого по адресу http://домен_вашего_сайта/robots.txt откроется robots.txt примерно следующего содержания: | ||
+ | |||
+ | <source lang="robots"> | ||
+ | User-Agent: Googlebot | ||
+ | Disallow: /admin | ||
+ | Disallow: /index.php | ||
+ | Disallow: /emarket/addToCompare | ||
+ | Disallow: /emarket/basket | ||
+ | Disallow: /go_out.php | ||
+ | Disallow: /search | ||
+ | |||
+ | Disallow: /*noindex | ||
+ | |||
+ | User-Agent: Yandex | ||
+ | Disallow: /admin | ||
+ | Disallow: /index.php | ||
+ | Disallow: /emarket/addToCompare | ||
+ | Disallow: /emarket/basket | ||
+ | Disallow: /go_out.php | ||
+ | Disallow: /search | ||
+ | |||
+ | Disallow: /*noindex | ||
+ | |||
+ | User-Agent: * | ||
+ | Disallow: /admin | ||
+ | Disallow: /index.php | ||
+ | Disallow: /emarket/addToCompare | ||
+ | Disallow: /emarket/basket | ||
+ | Disallow: /go_out.php | ||
+ | Disallow: /search | ||
+ | |||
+ | Disallow: /*noindex | ||
+ | Host: www.домен_вашего_сайта.ru | ||
+ | Crawl-delay: 3 | ||
+ | |||
+ | Sitemap: http://домен_вашего_сайта/sitemap.xml | ||
+ | </source> | ||
+ | |||
+ | А так как любая страницы фотографии будет содержать в своем адресе подстроку "noindex", то она будет скрыта от индексации правилом Disallow: /*noindex. | ||
+ | [[category:Модуль SEO]][[Категория:API]] |
Текущая версия на 08:04, 4 сентября 2015
Актуально для версии 2.9.5
Задача
Есть несколько вариантов решения данной задачи:
- 1) проставить у каждой страницы галочку "не индексировать"
- 2) проставить галочку "не индексировать" у раздела, чтобы его подразделы скрылись от индексации
- 3) на сайте не выводить ссылки на эти страницы и убрать их из sitemap по статье Исключение_из_sitemap.xml_страниц_с_определенным_типом
Но каждый способ имеет значительные минусы:
- 1) если страниц будет очень много, то robots может разрастись до больших размеров, после чего не будет приниматься поисковыми системами
- 2) если у Вас есть страница товара, у к ней дочерние страницы фотографий, которые нужно скрыть, то Вы же не будете ради этого скрывать сам товар
- 3) как показывает практика, какими-то способами поисковые системы все равно находят страницы
Самый надежный способ что-либо скрыть от индексации, это robots.txt.
Решение
Мы сделаем так, чтобы в uri любой добавляемой страницы заданного типа, например страницы фотографии, добавлялось определенная строка, например "noindex", а потом зададим в robots регулярное выражение, которое закроет от индексации любую страницы, в адресе которой будет содержаться эта строка.
Пример
1) Для изменения uri мы воспользуемся событийной моделью UMI.CMS и напишем обработчик для события systemCreateElement.
Создадим в директории /classes/modules/photoalbum файл custom_events.php следующего содержания:
<?php
new umiEventListener('systemCreateElement', 'photoalbum', 'onCreatePhotoAdmin');
?>
Потом там же создадим файл permissions.custom.php следующего содержания:
<?php
$permissions = array(
'albums' => array('onCreatePhotoAdmin'),
);
?>
А потому уже добавим в файл __custom.php код обработчика:
public function onCreatePhotoAdmin(iUmiEventPoint $event){
if($event->getMode() === "after") {
$page = $event->getRef("element");
$page_type = $page->getHierarchyType();
if ($page_type->getName() == 'photoalbum' && $page_type->getExt() == 'photo'){
$old_alt = $page->getAltName();
$new_alt = 'noindex_' . $old_alt;
$page->setAltName($new_alt);
$page->commit();
}
}
}
Теперь при создании фотографий через административную панель, к ним адрес будет добавляться строка "noindex_". При желании, Вы можете написать аналогичные обработчики и для других событий, например на события добавления страницы через импорт.
2) Теперь перейдем к кастомизации robots.txt
Создадим в корневой директории сайта папку "robots", а в ней файл 1.robots.txt, где 1 это идентификатор Вашего домена, примерно следующего содержания:
User-Agent: Googlebot
%disallow_umi_pages%
Disallow: /*noindex
User-Agent: Yandex
%disallow_umi_pages%
Disallow: /*noindex
User-Agent: *
%disallow_umi_pages%
Disallow: /*noindex
Host: www.домен_вашего_сайта.ru
Crawl-delay: 3
Sitemap: http://домен_вашего_сайта/sitemap.xml
После этого по адресу http://домен_вашего_сайта/robots.txt откроется robots.txt примерно следующего содержания:
User-Agent: Googlebot
Disallow: /admin
Disallow: /index.php
Disallow: /emarket/addToCompare
Disallow: /emarket/basket
Disallow: /go_out.php
Disallow: /search
Disallow: /*noindex
User-Agent: Yandex
Disallow: /admin
Disallow: /index.php
Disallow: /emarket/addToCompare
Disallow: /emarket/basket
Disallow: /go_out.php
Disallow: /search
Disallow: /*noindex
User-Agent: *
Disallow: /admin
Disallow: /index.php
Disallow: /emarket/addToCompare
Disallow: /emarket/basket
Disallow: /go_out.php
Disallow: /search
Disallow: /*noindex
Host: www.домен_вашего_сайта.ru
Crawl-delay: 3
Sitemap: http://домен_вашего_сайта/sitemap.xml
А так как любая страницы фотографии будет содержать в своем адресе подстроку "noindex", то она будет скрыта от индексации правилом Disallow: /*noindex.