301 редирект только для UserAgent YandexBot и других поисковиков

GP
На сайте с 10.07.2018
Offline
32
973

Здравствуйте! Пишу в более подходящуюю тему.

Сайт заблокировал РКН. Переехал обычным 301 редиректом на другой домен - его заблокировали через неделю.

Третью попытку хочу сделать так:

IP Роскомнадзора отдавать, что сайт по прежнему в бане, и сделать скрытый 301 редирект для YandexBot, GoogleBot, BingBot и им подобных.

Далее изменить главное зеркало в панели Вебмастеров на новый домен.

Подскажите, как правильно прописать 301 редирект со всех страниц сайта на новый домен по таким useragent?

Сразу скажу - я не чернушник, заблокировали сайт за хоккей, который не добавлялся уже год (правообладатели хотели миллион рублей компенсации, и душили до последнего - суд вынес только блокировку на территории РФ).

skapunker
На сайте с 15.01.2014
Offline
211
#1

закройте свой сайт и не нарушайте законодальство РФ

Я вебмастер высшего уровня. Разработка веб-приложений и скриптов. Пишите в телегу.
Mik Foxi
На сайте с 02.03.2011
Offline
1062
#2

gelios-plus, антибот из моей подписи вам в помощь, если php знаний нету.

Нужно будет только в шаблоне сделать проверку типа "если белый бот, то редиректим, остальных оставляем на текущем сайте".

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
F1
На сайте с 09.12.2019
Offline
19
#3

Самый надёжный способ определить поискового бота - обратный dns запрос. Просто парсить юзер-агент недостаточно - его слишком легко подменить. Поэтому скрипт должен делать следующее:

1) Проверка User-Agent

2) Получение имени хоста по ip (gethostbyaddr).

3) Проверка имени хоста регуляркой, например такой:

'~(\.googlebot\.com|\.google\.com|\.yandex\.(ru|com|net)|\.mail\.ru)$~'

4) По имени хоста получаем ip - он должен совпадать с ip клиента ($_SERVER['REMOTE_ADDR'])

Крайне желательно прикрутить кэш в БД или memcached, в котором хранить результат проверки ip.

fliger
На сайте с 17.09.2015
Offline
103
#4

Вставьте до вывода страницы:


<?php
if (preg_match('/\b(?:(?:bing|msn)bot|Googlebot|Mail\.RU_Bot|yandex\.com)/i', $_SERVER['HTTP_USER_AGENT'])) {
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if (preg_match('/^(?:(?>[^\.]+)\.)+(?:google(?:bot)?\.com|mail\.ru|msn\.(?:com|net)|yandex\.(?:com|net|ru))$/', $host) && gethostbyname($host) == $_SERVER['REMOTE_ADDR']) {
header('Location: http://НОВЫЙ_САЙТ.RU'.$_SERVER['REQUEST_URI']);
exit();
}
unset($host);
}
?>
S
На сайте с 13.10.2014
Offline
171
#5

Вот только за подобное дело вы получите эцих с гвоздями еще и от поисковика, так как он разбираться не будет. Выдаст баню за клоакинг и всё

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий