Apache + Tomcat выдает ошибку 500 для не браузерных агентов (Struts2)
У меня есть Apache WebServer + Tomcat 7, обслуживающий веб-страницы Struts2. Он работает без проблем, когда я использую любой веб-браузер, но когда я пытаюсь получить доступ к веб-странице, используя валидатор W3C или Facebook Lint, сервер возвращает ошибку 500.
[28/Oct/2011:21:45:58 +0100] "GET /agenda7/event?id=124 HTTP/1.1" 200 9898
"-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2)
AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22"
[28/Oct/2011:21:47:16 +0100] "GET /agenda7/event?id=124 HTTP/1.0" 500 6287 "-"
"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
[28/Oct/2011:21:47:42 +0100] "GET /agenda7/event?id=124 HTTP/1.1" 500 6287 "-"
"W3C_Validator/1.2"
Почему-то кажется, что эти сервисы не могут понять, как сделать запрос на получение веб-страницы без расширения, но если бы это было так, не должна ли ошибка быть 404?
Какие-либо предложения?
РЕДАКТИРОВАТЬ:
Только что проверил это с альтернативным отображением, и проблема сохраняется:
[28/Oct/2011:22:54:53 +0100] "GET /agenda7/event_124 HTTP/1.0" 500 6364 "-"
"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
Но это работает со страницей индекса, например:
[28/Oct/2011:22:59:01 +0100] "GET /agenda7/ HTTP/1.0" 200 20666 "-"
"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
2 ответа
500
код состояния означает, что код, запущенный в Tomcat, ошибся; Вы должны найти трассировку стека в журналах.
Имейте в виду, что запросы от этих не браузеров будут различаться тонкими способами; хит Facebook HTTP/1.0
, например.
Вероятно, ваш код ищет что-то в заголовках запросов или файлах cookie, которые есть в запросе браузера, а не в запросах бота.
Бьюсь об заклад, сайт ищет заголовки, которые не устанавливаются ботами.