![Apache + Tomcat 为非浏览器代理(Struts2)提供错误 500](https://linux22.com/image/565707/Apache%20%2B%20Tomcat%20%E4%B8%BA%E9%9D%9E%E6%B5%8F%E8%A7%88%E5%99%A8%E4%BB%A3%E7%90%86%EF%BC%88Struts2%EF%BC%89%E6%8F%90%E4%BE%9B%E9%94%99%E8%AF%AF%20500.png)
我有一个 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
我敢打赌,该网站正在寻找机器人未设置的标头。