У меня есть 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, которые есть в запросе браузера, а не в запросах ботов.
Бьюсь об заклад, сайт ищет заголовки, которые не устанавливаются ботами.