Сегодня мы расскажем о способе скрытия текстовых блоков и ссылок от поисковых систем. Метод работает с динамическим содержимым и прост для внедрения. Подход не новый, кто-то его уже использует.
Суть метода: Мы перемещаем скрываемый контент в атрибуты тегов, которые не понимают поисковые системы. Далее, при помощи JavaScript, перемещаем скрытый контент из наших атрибутов обратно. Для этого используются HTML5 атрибуты data-*.
Пример 1. Скрываем текстовый блок:
Было | Стало |
<div>Спасибо, Ваш заказ создан.</div> | <div data-innerhtml="Спасибо, Ваш заказ создан."></div> |
Пример 2. Скрываем внутреннюю ссылку:
Было | Стало |
<a href="http://site.ru/">Главная</a> | <a data-href="http://site.ru/">Главная</a> |
(получается «безатрибутная» ссылка)
Пример 3. Скрываем внутреннюю ссылку и её текст:
Было | Стало |
<a href="http://site.ru/">Главная</a> | <a data-href="http://site.ru/" data-innerhtml="Главная"></a> |
Вот JavaScript, которым происходит замена:
function func_replace_seo_attr() {
// Перебираем все теги с атрибутом data-innerhtml= и перемещаем содержимое этого атрибута в тело тега:
$('*[data-innerhtml]').each(function() {
$(this).html(func_htmlspecialchars_decode($(this).attr('data-innerhtml'))).removeAttr('data-innerhtml');
});
// Перебираем все ссылки с атрибутом data-href= и перемещаем содержимое этого атрибута в атрибут href=:
$('a[data-href]').each(function() {
$(this).attr('href', $(this).attr('data-href')).removeAttr('data-href');
});
}
// Заменяем html сущности на символы html
function func_htmlspecialchars_decode(string) {
return string.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '\'');
}
// Раз в пол секунды вызываем функцию замены атрибутов
setInterval(function() {
func_replace_seo_attr();
}, 500);
Весь переносимый в атрибуты контент должен быть преобразован на уровне сервера в HTML-сущности чтобы избежать ошибок валидации (например, при помощи PHP-функции htmlspecialchars). В приведённом коде есть функция обратной замены HTML-сущностей на символы.
Функция setInterval используется для повторной замены при изменениях в динамических элементах страницы.
Есть различные аспекты использования данного метода. Например, JavaScript-обработчики привязываются после загрузки документа. А нам надо это сделать ДО загрузки. Поэтому поместить этот код надо в самый низ документа (например, перед </body>).
Используя такой метод скрытия от индексации текстов и ссылок, мы решаем две основные задачи:
- Избегаем использование атрибута rel="nofollow" для ссылок. Представители Google не рекомендуют использовать rel="nofollow" для перераспределения PageRank;
- Избегаем использование <noindex> и <!––noindex––> для текстовых блоков. Этот метод нас не устраивает из-за того, что его не учитывает поисковая система Google.
P.S. Если у вас паранойя и вы уверены, что этого не достаточно для скрытия от индексации ссылки или текста, то можете дополнительно закодировать содержимое атрибутов. Например, при помощи base64.
Руслан Халиулин
Веб-программист