Хостинг. Ограничение доступа к некоторым url

tgr_85
9 місяців
0

Здравствуйте.

Ситуация такая: есть сайт, который отправляет свои новости через rss в агрегаторы (Яндекс.Новости и т.д.). Но помимо бота Яндекса по этим url ходят и другие плохие боты плохих людей, которые полностью копируют статьи и растаскивают по своим сайтам.
Я пробовал банить IP ботов, но их меняют, и все повторяется заново.

Я хочу дать доступ к url rss своего сайта только ботам Яндекса, а остальным закрыть. А в идеале - дать доступ ботам Яндекса, а всем остальным отдать 301 редирект на другой url (готов заморочиться и специально для них отдавать rss какого-нибудь порнохаба и т.п.).

Итого, я хочу:

Открыть ботам Яндекса путь к site.com/rss-yandex
Боты Яндекса выглядят в логах так:
GET /rss-yandex HTTP/1.0" 200 22560 "-" "Mozilla/5.0 (compatible; YandexNews/4.0; +yandex.com/bots)
GET /rss-yandex HTTP/1.0" 200 22560 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +yandex.com/bots)
IP у них разные и много.

Всем остальным - закрыть, или отдать 301 на site.com/rss-gadosti

Подскажите, пожалуйста, с синтаксисом .htaccess

rudenko
9 місяців
1

Дело в том, что поле referrer легко подделывается, поэтому самым правильным решением будет ограничить доступ по IP. Но если нужно ограничить по Referrer, то код будет приблизительно таким:

if (!isset($_SERVER['HTTP_REFERER']) || !preg_match('/(?:YandexBot|YandexNews)/', $_SERVER['HTTP_REFERER'])) {
header("Location: адрес_куда_идти_посторонним");
exit;
}

tgr_85
9 місяців
0

Супер, спасибо.
Только я так понял, что этот код ограничит доступ ко всему сайту. А как ограничить доступ только к странице site.com/rss-yandex ?

rudenko
9 місяців
1

Необходимо найти часть кода, которая формирует RSS и там его вставить. У каждого сайта и CMS это выполняется в определенном месте, каком именно подсказать не могу.

tgr_85
9 місяців
0

Спасибо, попробую