- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Еще раз. Клиент (бот, броузер) не передает ни HTTP_HOST, ни SERVER_NAME. Он передает только HOST. Если он его не передает, то HTTP_HOST будет пустой. SERVER_NAME (если Apache) зависит от UseCanonicalName, и будет либо браться из конфига сервера, либо тоже из заголовка HOST.
Я так и не понял что вы хотите..
Надо отдавать то, что на самом деле есть. Если страницы нет - 404, если есть - 200. Какая разница кто это, бот или не бот?
Так в том-то и загвоздка, что для access.log прописал формат записи с выводом Host, HTTP_HOST, SERVER_NAME:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Host}i\" \"%{HTTP_HOST}e\" \"%{SERVER_NAME}e\"" combined
А этот паразит в некоторых случаях где-то теряет HTTP_HOST (с Ваших слов понял, что может быть проблема в Apache)
- 157.55.32.100 - - [02/Oct/2013:18:36:08 +0400] "GET /page1.php?id=1 HTTP/1.1" 200 5122 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg1.site.ru" "www.reg1.site.ru" "www.reg1.site.ru"
- 157.55.32.100 - - [02/Oct/2013:18:36:08 +0400] "GET /page2.php?id=2 HTTP/1.1" 200 4864 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg2.site.ru" "www.reg2.site.ru" "www.reg2.site.ru"
- 157.55.32.100 - - [02/Oct/2013:18:35:53 +0400] "GET /page3.php?id=3 HTTP/1.1" 404 315 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg3.site.ru" "-" "-"
- 157.55.32.100 - - [02/Oct/2013:18:35:53 +0400] "GET /page4.php?id=4 HTTP/1.1" 404 315 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg4.site.ru" "-" "-"
Т.е. по логам - 1, 2 запись - все отработало правильно, Apache перешел в соответствующую директорию c:/www/reg - где обрабатываются все регионы
А вот 3 и 4 запись - показывают пустой HTTP_HOST, но не пустой Host www.reg3.site.ru и www.reg4.site.ru Соответственно переходят в дефолтную директорию, где и получают свою законную 404 страничку.
UseCanonicalName стоит Off.
По ходу общения с Вами, существенно сузился круг подозреваемых :)
Вопрос уже получается следующий: почему у части запросов от BingBot "теряется" HTTP_HOST, при непустом Host?
Вот тут и тут можете посмотреть примеры заголовка host и переменных HTTP_HOST, SERVER_NAME
Вот тут и тут можете посмотреть примеры заголовка host и переменных HTTP_HOST, SERVER_NAME
Внимательно-внимательно прочитал обе ссылки плюс "вправо-влево" от них. В довесок ко всему еще раз глянул логи.
Статьи 100%-ной ясности не внесли. Туманно маячит, что у запросов от бота которые вылетели мог быть некорректно сформулирован заголовок и соответственно HTTP_HOST Апачем не вырезался (при том, что параметр Host в заголовке присутствует) - как итог ошибка 404. Бот с того же IP адреса через некоторое время передает запрос, который абсолютно корректно отрабатывается.
Посмотрел копии логов с начала года - такая ситуация пошла с середины сентября (никаких изменений последние полгода не вносилось)
На итог получается - BingBot'ом так и задумано, значит ошибка 404 есть правильно.
Братцы, развейте сомнения, скажите что я молодец, все понял правильно и наконец-то могу взять с полки пирожок :)
Туманно маячит, что у запросов от бота которые вылетели мог быть некорректно сформулирован заголовок
Я не думаю, что у Bing бота, если это он (смотрели IP?), "некорректно сформулирован заголовок".
Скорее всего, это вполне корректные запросы, например, по IP. Где он берет такие ссылки? Сложно сказать, видимо, где-то берет. В таком случае он должен попадать на DefaultHost в апаче. Можете поставить с него редирект на правильный домен, если хотите.
Я не думаю, что у Bing бота, если это он (смотрели IP?), "некорректно сформулирован заголовок".
+1
Iggo, cпасибо за ответы
Вопрос уже получается следующий: почему у части запросов от BingBot "теряется" HTTP_HOST, при непустом Host?
Я бы на вашем месте переформулировал вопрос - почему мой Апач при определенных обстоятельствах выдает пустой "HTTP_HOST". Потому что следующий вопрос не "может ли мне это вылезти боком" а "Когда вылезет, сколько ущерба будет :("
И начал копать
1 Что изменилось на сервере (версии apache, php etc) непосредственно перед тем, как начали появляться ошибки.
2 Если хоть в 1м .htaccess поддоменов есть редирект-директивы, переключил бы лог редиректов в отладку и покурил
3 Подвеслил бы на дефолтную страницу на пару дней дамп заголовка в файл (php getallheaders() ) и покурил бы результат.
4 У поддоменов свои IP или все на 1м? Менялся ли IP/хостер/DNS перед возникновением проблем?
5 Что будет, если запросить страницу на поддомене с левым портом? через https? через https с левым портом?
6 Что bingbot запрашивал непосредсвенно до и после получения 404 ошибки?
Кстати, что за дефисы в вашем логе перез IP? просто отбили каждую строчку?
PS. Если bingbot совсем задосил, тормозните его в robots.txt через Crawl-delay
Я не думаю, что у Bing бота, если это он (смотрели IP?), "некорректно сформулирован заголовок".
Скорее всего, это вполне корректные запросы, например, по IP. Где он берет такие ссылки? Сложно сказать, видимо, где-то берет. В таком случае он должен попадать на DefaultHost в апаче. Можете поставить с него редирект на правильный домен, если хотите.
BingaBonga - точняк: в Verify Bingbot Tool проверил IP - действительно признали своего
Если бы в Host стоял тупо наш IP - он бы попал в Default, но HOST в логе остался бы. Глянул только что логи - реденько так попадаются Host="xxx.xxx.xxx.xxx:80" в основном школьники ломятся к phpMyAdmin
Если бы с того же IP бота не проходили и корректные запросы - грешил бы на Апач.
Но ведь он паразит просит разные поддомены (версия, что просят просто IP отпадает - Host показывал бы первый дефолтовый домен)
Redirect на основной домен ставить не хочется - ибо нефиг через IP лазать!!! :)
Спасибо за направления, кое-что критичное подправил, остался уже чисто академический интерес.
Получится разобраться и победить - отпишусь!!!
---------- Добавлено 03.10.2013 в 21:50 ----------
+1
Iggo, cпасибо за ответы
Я бы на вашем месте переформулировал вопрос - почему мой Апач при определенных обстоятельствах выдает пустой "HTTP_HOST". Потому что следующий вопрос не "может ли мне это вылезти боком" а "Когда вылезет, сколько ущерба будет :("
И начал копать
1 Что изменилось на сервере (версии apache, php etc) непосредственно перед тем, как начали появляться ошибки.
2 Если хоть в 1м .htaccess поддоменов есть редирект-директивы, переключил бы лог редиректов в отладку и покурил
3 Подвеслил бы на дефолтную страницу на пару дней дамп заголовка в файл (php getallheaders() ) и покурил бы результат.
4 У поддоменов свои IP или все на 1м? Менялся ли IP/хостер/DNS перед возникновением проблем?
5 Что будет, если запросить страницу на поддомене с левым портом? через https? через https с левым портом?
6 Что bingbot запрашивал непосредсвенно до и после получения 404 ошибки?
Кстати, что за дефисы в вашем логе перез IP? просто отбили каждую строчку?
PS. Если bingbot совсем задосил, тормозните его в robots.txt через Crawl-delay
Спасибо за помощь, отвечаю:
1 Изменений не было около полугода (apache, php, hosts, mysql, .htaccess)
2 Редиректов не было нигде
3 ПОЖАЛУЙ ВОСПОЛЬЗУЮСЬ!!! Как понял - запись в файл значений getallheaders()
4 У поддоменов один IP. DNS не менялся, хостер тот же, сервер свой Collocation. Правда месяц назад хостер собирался менять свои маршрутизаторы, хабы или еще какое-то труднопроизносимое :)
5 Слушает только 80 порт, соответственно выдает Веб страница недоступна
6 Когда что - просит разные страницы разных поддоменов. Системы для "поломки" уловить не смог
Дефисы - это мне показалось, что так будет читабельнее и красивше:)
Crawl-delay энто здорово, но на сотне поддоменов он же эти 3 секунды для каждого брать будет.
P.S. соберусь с мыслями и воспользуюсь советом №3 - главное, чтоб этот подлец никуда не сбег. А то сейчас глянул логи - с 18:00 не появлялся. Может рабочий день у него закончился:)
Ну вот, когда коту делать нечего - он сидит и ... кодит
Занялся 3-м вариантом
В дефолтном блоке есть .htaccess:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*)/index\.php.*
RewriteRule (.*) /index.php [R=301,L]
В index.php (единственный файл который выводится всегда и на который соответственно редиректится все) в конце добавил
<?php
$f=fopen("log\my.log",'a');
flock ($f,2);
$HDate=Date('Y-m-d H:i:s');
fwrite($f,"--- $HDate\n");
foreach (getallheaders() as $name => $value)
{
fwrite($f,"$name: $value\r\n");
};
fwrite($f,"\r\n");
fclose($f);
?>
Ввел несуществующий поддомен+несуществующую страницу zzz.site.ru/pageX.php, соответственно перебросило на zzz.site.ru/index.php
В my.log увидел аж три записи:
--- 2013-10-04 01:23:11
Host: zzz.site.ru
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
--- 2013-10-04 01:23:11
Host: zzz.site.ru
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Accept: */*
Referer: http://zzz.site.ru/index.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
--- 2013-10-04 01:23:11
Host: zzz.site.ru
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Пока не понял, с чем связано 3 записи - м.б. установленный у меня RDS бар
Зато вот пошел BingBot:
access.log:
157.56.93.83 - - [04/Oct/2013:01:24:58 +0400] "GET /pageN.php HTTP/1.1" 301 342 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "www.reg1.site.ru" "-" "-"
А вот что этот гаденыш оставил в my.log (всего 1 запись)
--- 2013-10-04 01:24:58
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: no-cache
Accept: */*
Accept-Encoding:
From: bingbot(at)microsoft.com
Host: www.reg1.site.ru
User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Для www.reg1.site.ru четко прописана секция в httpd.conf, но понятно, что он туда не попадает.
izbushka, Sanches27, уважаемые, есть мысли?
Ситуация ровно та же, что и описана постом выше. Сейчас с регулярностью страничка в полчаса BingBot получает 301 редирект. На выходных специально зарегился в Webmaster Bing. По их статистике - соответственно появились записи с 301 (раньше они кучковались в 404 ошибке).
izbushka, Sanches27, уважаемые, приведенная информация хоть на что-то наталкивает?
izbushka, Sanches27, уважаемые, приведенная информация хоть на что-то наталкивает?
Не увидел REQUEST_URI .. К чему запрос происходит?
p.s. А зачем в конце делать редирект на index.php вместо внутреннего реврайта и возврата 404 после обработки, если страницы не существует?
Не увидел REQUEST_URI .. К чему запрос происходит?
p.s. А зачем в конце делать редирект на index.php вместо внутреннего реврайта и возврата 404 после обработки, если страницы не существует?
ivan-lev, попробую кратко сформулировать суть вопроса без предыдущего обсуждения
BingBot периодически "направляется" Апачем в дефолтную директорию. При этом для страницы, которую он запрашивает, существует и поддомен и сама страница. Более того, в большинстве случаев тот же BingBot получает запрашиваемые страницы.