- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Братцы, возникла проблема: робот BingBot периодически получает 404 ошибку
Есть site.ru с региональными поддоменами reg1.site.ru, reg2.site.ru, ... regN.site.ru
На каждом поддомене 2000-3000 страниц
Сервер - Apache/2.0.55
В последний месяц повадился заходить BingBot. Не просто заходит, а фактически не вылезает - по логам читает до 5 страниц в секунду. Банить не хотелось бы, т.к. какой-никакой трафик с Бинга идет (до 200 уников в сутки).
Собственно о проблеме:
Глянул я в error.log - все забито строкой типа:
[Wed Oct 02 20:12:45 2013] [error] [client 157.55.32.100] script 'C:/WWW/default/pag1.php' not found or unable to stat
C:/WWW/default/ - директория по-умолчанию оставлена для несуществующих поддоменов и по идее туда никто попадать вообще не должен. Начал разбираться, кто такой настырный и тупой, в итоге работал с access.log
Для него прописал в _httpd.conf:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Host}i\" \"%{HTTP_HOST}e\" \"%{SERVER_NAME}e\"" combined
В итоге в access.log собрались подобные записи:
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.vedun.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" "-" "-"
Не поленился, в Verify Bingbot Tool проверил IP - действительно признали своего:
Verdict for IP address 157.55.32.100:
Yes - this IP address is a verified Bingbot IP address. Name: msnbot-157-55-32-100.search.msn.com.
По логам видно, что один и тот же бот всегда передает HOST в заголовке, а HTTP_HOST и SERVER_NAME - когда как.
Насколько я понимаю - конфиг Apache определяет чего ему делать с разными поддоменами в секции VIRTUALHOST, сравнивая с полученным параметром SERVER_NAME. А так как периодически он приходит пустой, то срабатывает дефолтное правило и он отправляется в директорию ошибков, а там соответствующих страниц нет и формируется ошибка 404.
Соответственно вопрос - как правильно поступить? Я пока вижу 2 варианта:
1. В дефолтной директории выводить только 1 страницу с кодом(!) ошибки 404 и прописать жесткий редирект на нее
2. Каким-то образом на уровне конфига Apache заменять пустой HTTP_HOST+SERVER_NAME на Host из заголовка
Прошерстил все, что можно - ничего похожего не нашел. Что посоветуете?
всегда передает HOST в заголовке, а HTTP_HOST и SERVER_NAME - когда как.
HOST - это заголовок, да.
Остальное все нет.
HTTP_HOST - это переменная окружения, которая определяется по этому заголовку
SERVER_NAME - это то, что задано в конфиге сервера.
Т.е. к клиенту эти две переменных отношения не имеют
Т.е. HOST и HTTP_HOST должны всегда совпадать?
Тогда как получается, что запрос к идентичным страницам настолько разный:
"www.reg1.site.ru" "www.reg1.vedun.ru" "www.reg1.site.ru"
или
"www.reg1.site.ru" "-" "-"
Rewrit'ами не баловался...
Куда копать - ума не приложу...
Возможно бот обращается по ип адресу
Братцы, возникла проблема: робот BingBot периодически получает 404 ошибку
Есть site.ru с региональными поддоменами reg1.site.ru, reg2.site.ru, ... regN.site.ru
"www.reg2.site.ru" "www.reg2.site.ru"
скип
Предлагаю копнуть в сторону:
1 reg2.site.ru или www.reg2.site.ru? Какой правильный или оба существуют?
2 Проблема только на reg3 / reg4 или на всех поддоменах?
3 Есть ли в конфиге Апача UseCanonicalName Off?
3 Если пользуете nginx, почитайте еще вот эту статью,
http://habrahabr.ru/post/166855/
Возможно бот обращается по ип адресу
Точно не оно.
Для IP адреса стоит блок:
<VirtualHost 19X.XXX.XXX.XXX>
ServerAdmin bla-bla-bla
DocumentRoot c:/www/default
ServerName 19X.XXX.XXX.XXX
ErrorLog logs/localhost_error.log
CustomLog logs/localhost_access.log combined
</VirtualHost>
И тогда бы не вылезал конкретный регион
---------- Добавлено 02.10.2013 в 22:42 ----------
Предлагаю копнуть в сторону:
1 reg2.site.ru или www.reg2.site.ru? Какой правильный или оба существуют?
2 Проблема только на reg3 / reg4 или на всех поддоменах?
3 Есть ли в конфиге Апача UseCanonicalName Off?
3 Если пользуете nginx, почитайте еще вот эту статью,
http://habrahabr.ru/post/166855/
1. Достучаться можно до обоих, в роботсе прописан главный Host с WWW
в config:
<VirtualHost reg2.site.ru>
ServerAdmin bla-bla-bla
DocumentRoot c:/www/reg
ServerName reg2.site.ru
ErrorLog logs/localhost_error.log
CustomLog logs/localhost_access.log combined
</VirtualHost>
<VirtualHost www.reg2.site.ru>
ServerAdmin bla-bla-bla
DocumentRoot c:/www/reg
ServerName www.reg2.site.ru
ErrorLog logs/localhost_error.log
CustomLog logs/localhost_access.log combined
</VirtualHost>
2. проблема вылезает на всех поддоменах
3. UseCanonicalName Off - присутствует в явном виде, УРЛы не преобразует
4. К сожалению/счастью стоит WinServer 2003 WEB Edition, статью обязательно гляну
Братцы, неужели ни у кого подобного нет - не поленитесь, гляньте логи?
Братцы, неужели ни у кого подобного нет - не поленитесь, гляньте логи?
Дело в настройках вашего сервера, у меня он как и положено - получает 444 :-D
Соответственно вопрос - как правильно поступить? Я пока вижу 2 варианта:
1. В дефолтной директории выводить только 1 страницу с кодом(!) ошибки 404 и прописать жесткий редирект на нее
2. Каким-то образом на уровне конфига Apache заменять пустой HTTP_HOST+SERVER_NAME на Host из заголовка
Я не понял чего вы хотите..
1. А что у вас несколько страниц выводится, или что?
2. Зачем его заменять? Какая цель?
Я не понял чего вы хотите..
1. А что у вас несколько страниц выводится, или что?
2. Зачем его заменять? Какая цель?
По пунктам:
1. В дефолтной директории посмотрел - упустили - нет 404 страницы - вываливается Апачевский 404 NotFound
2. Заменить исключительно с тем, чтобы правильно отработать - если бот стучится по адресу: www.reg1.site.ru/page1.php, чтобы ему соответственно выводилась страничка page1 данного региона.
Похоже объясняльщик из меня хреновый:)
Попробую еще лаконичней.
Суть: похоже BingBot периодически передает пустые HTTP_HOST (SERVER_NAME) на все имеющиеся поддомены. При этом Host в заголовке запроса не пустой.
Вопрос:
- это коряво отрабатывает Apache или BingBot преднамеренно подменяет переменную HTTP_HOST
- если это козни бота, то как правильно поступить по теории сайтостроительства:)
а. выдать страницу ошибки и 404 код
б. попытаться отредиректить, подменив пустой HTTP_HOST на известный www.reg1.site.ru
Суть: похоже BingBot периодически передает пустые HTTP_HOST (SERVER_NAME) на все имеющиеся поддомены. При этом Host в заголовке запроса не пустой.
Еще раз. Клиент (бот, броузер) не передает ни HTTP_HOST, ни SERVER_NAME. Он передает только HOST. Если он его не передает, то HTTP_HOST будет пустой. SERVER_NAME (если Apache) зависит от UseCanonicalName, и будет либо браться из конфига сервера, либо тоже из заголовка HOST.
Я так и не понял что вы хотите..
Надо отдавать то, что на самом деле есть. Если страницы нет - 404, если есть - 200. Какая разница кто это, бот или не бот?