Как скрыть от индексации все страницы определенного типа — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Правки Alexei (обсуждение) откачены к версии Mad grant)
 
(не показано 12 промежуточных версий 2 участников)
Строка 43: Строка 43:
 
<?php
 
<?php
 
$permissions = array(
 
$permissions = array(
'albums' => array('onCreatePhotoAdmin', 'getMultiAlbums'),
+
'albums' => array('onCreatePhotoAdmin'),
 
);
 
);
 
?>
 
?>
Строка 64: Строка 64:
 
}
 
}
 
</source>
 
</source>
[[category:Модуль SEO]]
+
 
 +
Теперь при создании фотографий через административную панель, к ним адрес будет добавляться строка "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.