По htaccess подскажите (запрет доступа по referrer)

Ignat

Собственно почти всё в заголовке.

Задача: простенький сайт, страницы статичные.
Некоторые кривые внешние сайты-агрегаторы откуда-то берут кучу неправильных линков и ломятся куда ни попадя по сайту. Естественно, получают законное 404.

Проблема в том, что иногда таких ошибок за день возникают сотни, реально 500-700 ошибок от таких кривых ссылок. При этом я как-то привык контролировать происходящее на сайте и стараюсь посматривать на причины ошибок (мало ли, может я где накосячил в сайте, линк неправильный дал и т.д.), а такой поток тупо забивает выдачу и найти реальные ошибки становится очень трудно.

Вывод: требуется при указании в поле referrer конкретного сайта (дальнейшие его поддомены любые уже не важны, все оптом подгребаем) тупо переадресовать пользователя куда-то (нах 😊, в гугл и т.д.), но без выдачи 404-ой ошибки. Беглый поиск показывает, что вроде подобное можно сделать через htaccess, но самому аккуратно перекапывать документацию и потом долго отлаживаться радости мало. Потому и прошу помощи, наверняка же есть умельцы, кто сталкивался уже с подобной задачей.

------------------
Жизнь хороша, если есть ППШ!

WebDeveloper

при указании в поле referrer где? т.е. в чем это поле присутствует?

WebDeveloper

и еще... точно не берусь судить, но полагаю, редирект не решит проблему... сначала в логе зафиксируется 404 а за тем сработает редирект и будет 200 с урлом куда редирект увел...

WebDeveloper

Синтаксис команды Redirect выглядит следующим образом:

Redirect [status] URL_LOCAL URL_REDIRECT

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

* permanent (301 - документ перемещен постоянно)
* temp (302 - документ перемещен временно)
* seeother (303 - смотрите другой)
* gone (410 - убран)

URL_LOCAL : локальная часть URL запрашиваемого документа.

URL_REDIRECT : URL куда должен быть выполнен редирект.

WebDeveloper

Некоторые кривые внешние сайты-агрегаторы откуда-то берут кучу неправильных линков и ломятся куда ни попадя по сайту. Естественно, получают законное 404.

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

Ignat

WebDeveloper
при указании в поле referrer где? т.е. в чем это поле присутствует?
Я так понимаю, что в строке запроса к серверу, т.е. де-факто это обычный переход по линку с внешнего сайта. Именно не в линке поле, а в запросе к серверу, о чём оно и оповещает.


WebDeveloper
и еще... точно не берусь судить, но полагаю, редирект не решит проблему... сначала в логе зафиксируется 404 а за тем сработает редирект и будет 200 с урлом куда редирект увел...
Вот если это верно, тогда затея теряет смысл. Идея именно отгородиться от наиболее тупых агрегаторов, уменьшить количество ошибок в логе.

WebDeveloper
это могут быть различные роботы которые ищут уязвимости на сайте... от них наверное нужен другой способ отбиваться... например есть уязвимость у форума, робот берет ваше доменное имя и стандартый путь к форуму которого у вас даже нет... и пытается обратиться, по факту проверяет есть или нет... получает 404 и уходит ни с чем... итог у вас в логе нагажено
Это само собой. Но с ними ничего не сделать - атаки с бот-сетей, т.е. IP каждый раз разные, никаких рефов и т.д. тупо запрос адреса, по которому у хомячков обычно уязвимость. С этим бороться невозможно, к сожалению. Но и приходят не часто, да и гадят - строк 20-50 в лог за заход. Не 200-500 как тут.
А тут именно внешние сайты-агрегаторы, которые, видимо, собирают картинки, но почему-то делают это не всегда корректно. И по ссылкам с них требуют не существующие у меня картинки, что и приводит к ошибкам...

------------------
Жизнь хороша, если есть ППШ!

WebDeveloper

пример из лога дайте заценить...
проверить можно refer идет в http загловке, его мог бы проанализировать скрипт допустим на php, но на статике это не сработает... есть вариант, но проверить сейчас сам его не могу

в корневом каталоге создайте файл .htacces (точка в начале обязательна)
В нем следующие строки

RewriteEngine on
RewriteRule ^(.*)$ /index.html

если не поламаются переходы по ссылкам с корнегого каталога, то при вводе любого не существующего адреса будет открываться стартовая страница... но при этом 404 корректныйе вы тоже не отловите 😞 вышлите запись лога с ненужными ошибками, я гляну может какой другой вариант предложу

Ignat

WebDeveloper
пример из лога дайте заценить...
проверить можно refer идет в http загловке, его мог бы проанализировать скрипт допустим на php, но на статике это не сработает... есть вариант, но проверить сейчас сам его не могу

в корневом каталоге создайте файл .htacces (точка в начале обязательна)
В нем следующие строки

RewriteEngine on
RewriteRule ^(.*)$ /index.html

если не поламаются переходы по ссылкам с корнегого каталога, то при вводе любого не существующего адреса будет открываться стартовая страница... но при этом 404 корректныйе вы тоже не отловите 😞 вышлите запись лога с ненужными ошибками, я гляну может какой другой вариант предложу

Что-то мне подсказывает, что поломаются - перезапись безусловная.

Строка из лога:
www.iguns.ru [Tue May 29 23:16:04 2012] [error] [client 83.42.55.56] File does not exist: /home/i/igunsru/public_html/Articles/Handguns/ME-SingleActionArmy/p19.jpg , referer: http://www.badsitename.com/sd/?id=3465293&tn=1

Т.е. хочется именно по рефу "badsitename.com" отстреливать обращения, сохраняя при этом нормальную обработку ошибок со всех других сайтов, или даже с этого, но для тех, кто не тупо давит на линк до посинения (или скрипт пользует), а не поленится скопировать ссылку ручками.

------------------
Жизнь хороша, если есть ППШ!

WebDeveloper

анализ...
со страницы, если соблюдать пути... http://iguns.ru/Articles/Handguns/ME-SingleActionArmy.htm идет попытка отрытия картинки http://iguns.ru//Articles/Hand...ionArmy/p19.jpg
вопрос... была ли там ранее такая картинка?

теперь как отстрелить по имени хоста рефера
создаем в корне и во всех папках файл .htaccess

в него пишем

RewriteEngine on
RewriteCond %{REMOTE_HOST} ^*badsitename.*
RewriteRule ^(.*)$ /index.htm

что должно значить 😊 если в рефере присутствует badsitename то при образении с него на любой адрес перейти на главную... сам не проверял но думаю что так оно должно быть. за основу взят мануал http://beget.ru/art_htaccess

Ignat

WebDeveloper
анализ...
со страницы, если соблюдать пути... http://iguns.ru/Articles/Handguns/ME-SingleActionArmy.htm идет попытка отрытия картинки http://iguns.ru//Articles/Handguns/ME-SingleActionArmy/p19.jpg
вопрос... была ли там ранее такая картинка?

теперь как отстрелить по имени хоста рефера
создаем в корне и во всех папках файл .htaccess

в него пишем

RewriteEngine on
RewriteCond %{REMOTE_HOST} ^*badsitename.*
RewriteRule ^(.*)$ /index.htm

что должно значить 😊 если в рефере присутствует badsitename то при образении с него на любой адрес перейти на главную... сам не проверял но думаю что так оно должно быть. за основу взят мануал http://beget.ru/art_htaccess

Ага, спасибо, вот толкового мануала мне и не хватало 😊

Судя по всему опять чуть не так - условие не на адрес посетителя надо 😊

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^*badsitename.*
RewriteRule ^(.*)$ /index.htm

Осталось выяснить, поддерживает ли сие извращение хостер 😊

P.S. Картинка была, но весьма недолго. Иногда ещё круче бывает: остались, скажем, в итоге p18 и p20, а p19 удалена. Но ведь криворукие сайтописатели считают себя самыми хитрыми и надеются, что есть и p19, просто ссылки на неё нет. А если вместо них IMGP_1000 и IMGP_2000 будут (не переименованные фото с фотоаппарата)? Будут ломиться и перебирать все промежуточные... 😞
------------------
Жизнь хороша, если есть ППШ!