Назад | Перейти на главную страницу

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)"

А 500 код состояния означает, что код, выполняемый в Tomcat, имеет ошибку; вы должны найти трассировку стека в журналах.

Имейте в виду, что запросы от этих небраузеров будут тонко отличаться; хит Facebook HTTP/1.0, например.

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

Бьюсь об заклад, сайт ищет заголовки, которые не устанавливаются ботами.