Apache + Tomcat 为非浏览器代理(Struts2)提供错误 500

Apache + Tomcat 为非浏览器代理(Struts2)提供错误 500

我有一个 Apache WebServer + Tomcat 7 来提供 Struts2 网页。当我使用任何 Web 浏览器时,它都可以正常工作,但是当我尝试使用 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)"

答案1

状态代码500意味着 Tomcat 中运行的代码出现错误;您应该在日志中找到堆栈跟踪。

请记住,来自那些非浏览器的请求将会有细微的差别;HTTP/1.0例如,Facebook 的点击量是。

您的代码很可能正在请求标头或 cookie 中寻找浏览器请求中存在但机器人请求中不存在的内容。

答案2

我敢打赌,该网站正在寻找机器人未设置的标头。

相关内容