Собственно почти всё в заголовке.
Задача: простенький сайт, страницы статичные.
Некоторые кривые внешние сайты-агрегаторы откуда-то берут кучу неправильных линков и ломятся куда ни попадя по сайту. Естественно, получают законное 404.
Проблема в том, что иногда таких ошибок за день возникают сотни, реально 500-700 ошибок от таких кривых ссылок. При этом я как-то привык контролировать происходящее на сайте и стараюсь посматривать на причины ошибок (мало ли, может я где накосячил в сайте, линк неправильный дал и т.д.), а такой поток тупо забивает выдачу и найти реальные ошибки становится очень трудно.
Вывод: требуется при указании в поле referrer конкретного сайта (дальнейшие его поддомены любые уже не важны, все оптом подгребаем) тупо переадресовать пользователя куда-то (нах 😊, в гугл и т.д.), но без выдачи 404-ой ошибки. Беглый поиск показывает, что вроде подобное можно сделать через htaccess, но самому аккуратно перекапывать документацию и потом долго отлаживаться радости мало. Потому и прошу помощи, наверняка же есть умельцы, кто сталкивался уже с подобной задачей.
------------------
Жизнь хороша, если есть ППШ!
при указании в поле referrer где? т.е. в чем это поле присутствует?
и еще... точно не берусь судить, но полагаю, редирект не решит проблему... сначала в логе зафиксируется 404 а за тем сработает редирект и будет 200 с урлом куда редирект увел...
Синтаксис команды Redirect выглядит следующим образом:
Redirect [status] URL_LOCAL URL_REDIRECT
status : необязательное поле, определяет код возврата, допустимые значения:
* permanent (301 - документ перемещен постоянно)
* temp (302 - документ перемещен временно)
* seeother (303 - смотрите другой)
* gone (410 - убран)
URL_LOCAL : локальная часть URL запрашиваемого документа.
URL_REDIRECT : URL куда должен быть выполнен редирект.
Некоторые кривые внешние сайты-агрегаторы откуда-то берут кучу неправильных линков и ломятся куда ни попадя по сайту. Естественно, получают законное 404.
это могут быть различные роботы которые ищут уязвимости на сайте... от них наверное нужен другой способ отбиваться... например есть уязвимость у форума, робот берет ваше доменное имя и стандартый путь к форуму которого у вас даже нет... и пытается обратиться, по факту проверяет есть или нет... получает 404 и уходит ни с чем... итог у вас в логе нагажено
WebDeveloperЯ так понимаю, что в строке запроса к серверу, т.е. де-факто это обычный переход по линку с внешнего сайта. Именно не в линке поле, а в запросе к серверу, о чём оно и оповещает.
при указании в поле referrer где? т.е. в чем это поле присутствует?
WebDeveloperВот если это верно, тогда затея теряет смысл. Идея именно отгородиться от наиболее тупых агрегаторов, уменьшить количество ошибок в логе.
и еще... точно не берусь судить, но полагаю, редирект не решит проблему... сначала в логе зафиксируется 404 а за тем сработает редирект и будет 200 с урлом куда редирект увел...
WebDeveloperЭто само собой. Но с ними ничего не сделать - атаки с бот-сетей, т.е. IP каждый раз разные, никаких рефов и т.д. тупо запрос адреса, по которому у хомячков обычно уязвимость. С этим бороться невозможно, к сожалению. Но и приходят не часто, да и гадят - строк 20-50 в лог за заход. Не 200-500 как тут.
это могут быть различные роботы которые ищут уязвимости на сайте... от них наверное нужен другой способ отбиваться... например есть уязвимость у форума, робот берет ваше доменное имя и стандартый путь к форуму которого у вас даже нет... и пытается обратиться, по факту проверяет есть или нет... получает 404 и уходит ни с чем... итог у вас в логе нагажено
А тут именно внешние сайты-агрегаторы, которые, видимо, собирают картинки, но почему-то делают это не всегда корректно. И по ссылкам с них требуют не существующие у меня картинки, что и приводит к ошибкам...
------------------
Жизнь хороша, если есть ППШ!
пример из лога дайте заценить...
проверить можно refer идет в http загловке, его мог бы проанализировать скрипт допустим на php, но на статике это не сработает... есть вариант, но проверить сейчас сам его не могу
в корневом каталоге создайте файл .htacces (точка в начале обязательна)
В нем следующие строки
RewriteEngine on
RewriteRule ^(.*)$ /index.html
если не поламаются переходы по ссылкам с корнегого каталога, то при вводе любого не существующего адреса будет открываться стартовая страница... но при этом 404 корректныйе вы тоже не отловите 😞 вышлите запись лога с ненужными ошибками, я гляну может какой другой вариант предложу
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" отстреливать обращения, сохраняя при этом нормальную обработку ошибок со всех других сайтов, или даже с этого, но для тех, кто не тупо давит на линк до посинения (или скрипт пользует), а не поленится скопировать ссылку ручками.
------------------
Жизнь хороша, если есть ППШ!
анализ...
со страницы, если соблюдать пути... 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
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 будут (не переименованные фото с фотоаппарата)? Будут ломиться и перебирать все промежуточные... 😞
------------------
Жизнь хороша, если есть ППШ!