Надежный способ сокрытия ссылок сайта от поисковых роботов

от автора

В один из рабочих дней мне пришел список заданий. Отдельным пунктом была просьба найти способ надежного сокрытия внешних ссылок на сайте от поисковых систем.

В чем суть проблемы? Существует несколько способов спрятать ссылку от поисковых роботов, но у них имеются свои особенности:

  1. javascript позволяет закрыть ссылку от индексации, но сам google уже спокойно понимает такие скрипты;

  2. можно добавить к ссылке атрибут nofollow – это просто, но ссылочный вес самой ссылки будет теряться и при периодическом переиндексировании снизится общий вес сайта;

  3. cамый странный метод сокрытия ссылок — это закрытие конкретных страниц от индексации при помощи мета тегов или в файле robots.txt, но происходит полная потеря ссылочного веса передаваемого странице.

Зная эти нюансы, специалист по СЕО исключил все три способа сокрытия ссылок и предложил мне попытаться найти новое решение. И оно было найдено: что, если засунуть ссылку в некий стандартный функционал на сайте, который поисковый робот всегда игнорирует?
Возьмем обычную форму с методом отправки post:

<form method="post">     <button class="my">        Образец экспериментальной ссылки     </button> </form>

При помощи класса my можно стиль формы сделать оптимальным для дизайна вашего сайта, например:

<style>       .my{           border:none;           background: none;           text-decoration: underline;           color: blue;           cursor: pointer;           color:#00bceb       }       .form{         width: 300px;         margin: 50px auto;       } </style>

Как же добавить в форму нужную ссылку? Тут я вспомнил про javascript, теперь наша форма выглядит так:

<form method="post">     <button class="my" onclick="window.open('https://librebook.me/the_mysterious_island');">         Образец экспериментальной ссылки     </button> </form>

Как только пользователь кликнет по кнопке формы, замаскированной под ссылку, сработает форма с методом post, команда onclick выполнится и откроется новая вкладка по требуемому адресу. Задача условно решена. Однако, если таких ссылок много на странице, для каждой писать форму?

Воспользуемся PHP. Пусть у нас имеется массив ссылок, например:

$mass = [    'Таинственный остров' => 'https://www.litmir.me/bd/?b=265607',    'Три дня Индиго' => 'https://www.litres.ru/sergey-lukyanenko/tri-dnya-indigo/',    'Зеленая Миля' => 'https://librebook.me/the_green_mile',    'Герой должен быть один' => 'https://librebook.me/geroi_doljen_byt_odin',    'Затерянный мир' => 'https://librebook.me/zateriannyi_mir_doil_artur_ignatius_konan', ];

Добавим простейшим способом все формы на страницу:

foreach($mass as $k => $v) {    echo '<br><form method="post"><button class="my" onclick="window.open(\''. $v .'\');">'. $k .'</button></form>'; }

Здесь нужно очень внимательно следить за расстановкой одинарных и двойных кавычек, чтобы не было ошибки.

Для одной страницы задача решена, а если страниц много? Проще всего создать функцию и ее вызывать с нужными параметрами:

function s_link(string $name, string $link) {    $res = '<br><form method="post"><button class="my" onclick="window.open(\''. $link .'\');">'. $name .'</button></form>';    return $res; }  $res = s_link('Yandex','https://ya.ru'); echo $res;

Если js в данном примере не нравится, то можно обойтись без него:

<form method="post" action="https://www.litmir.me/bd/?b=265607" target="_blank">     <button class="my">        Таинственный остров     </button> </form>

Тогда функция будет выглядеть так:

function m_link(string $name, string $link) {   $res = '<br><form method="post" action="'.$link.'" target="_blank"><button class="my">'.$name.'</button></form>';   return $res; }  $res = m_link('Books','https://www.labirint.ru/books/'); echo $res; 

Если заместо названия ссылки хочется поместить картинку, то html код:

<form action="https://google.ru" target="_blank">           <button class="my">        <img src="123.jpg" alt="">      </button> </form>

Чтобы еще больше упростить жизнь, если подобных ссылок очень много, можно сделать выборку всех статей из базы данных в тех разделах сайта, где требуется сделать замену ссылки на форму. Затем посмотреть вхождение конкретной ссылки в статью и поставить на нее место форму отправки данных. В этом случае придется учитывать особенности «движка» вашего сайта, количество статей и ссылок. Например, обработку данных лучше делать поэтапно: берем сто статей, производим необходимую работу, следующий массив из ста статей. Подобные скрипты запускаются обычно вечером, когда с контентом сайта никто не работает.

Теперь посмотрим, как браузер реагирует на простую ссылку: видим появление сообщения в левом нижнем углу с адресом ссылки.

После помещения ссылки в форму, браузер ее уже не замечает.

Есть небольшой недостаток внешнего вида «ссылки» у данного способа: сам тег <form> является блочным, то есть занимает всю строку. Если попытаться вставить подобные элементы в предложение, то все формы уходят на новую строку и текст становится с разрывами. Это явление лучше учитывать: я добавлял в стили «display: contents» и разрывов уже не было.

Код на гитхабе для ленивых

Уважаемые читатели! Какими методами сокрытия ссылок веб-страниц вы пользуетесь?


ссылка на оригинал статьи https://habr.com/ru/post/667016/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *