java - 当我的 webapp 服务器出现错误时,我应该提供什么服务?

标签 java http tomcat

基本上我不想因为“重复内容”而被搜索引擎惩罚。我担心,在某些情况下,webapp 服务器可能会在页面上生成异常,否则这些页面会正常显示。

例如,用户可能会在 Internet 上发布指向以下两个页面的链接:

www.example.org/nice-article

www.example.org/even-nicer-article

现在我的 webapp 通常会返回两个不同的页面,它们会包含很好的内容,这些内容将被 Google 等收录。

我担心的是,在某些情况下,我的 webapp 服务器在尝试为这些页面提供服务时可能会遇到异常:可能存在我们没有在以前的版本中发现的错误,servlet 可能会抛出异常,因为它的资源取决于是down等

在那种情况下,据我所知,有一些异常正在捕获,但我不确定我在做什么是正确的。

在我的 web.xml 中,我有这样的东西:

<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/WEB-INF/jsp/error.jsp</location>
</error-page>

<error-page>
  <error-code>404</error-code>
  <location>/WEB-INF/jsp/error.jsp</location>
</error-page>

我不确定我的 web.xml 在这里是否正确。

我担心的是,在捕获到异常的情况下,我会显示一条来自 error.jsp 的消息,告诉我类似 “发生内部错误,请稍后重试” 但无论出于何种原因,我都会将其作为普通页面而不是错误页面发送(因此所有损坏的页面都会被引用为“重复内容”,因为它们或多或少都会显示相同的消息)。

基本上我想知道两件事:

  • 如果在爬行机器人(和客户端的浏览器)尝试访问某个资源通常可用时出现故障,我应该抛出什么状态码(是 500 对吗?)

  • 如何配置 Tomcat 来生成这样的状态码

此外,如果您能解释一种我可以测试它是否有效的方法,那就太好了:例如,我可以telnet 并查看我是否得到正确的错误代码吗?

最佳答案

您可能希望对暂时不可用的页面使用 503 错误。这将告诉任何公平的机器人,不可用是暂时的,他们需要稍后回来抓取页面。

你的 web.xml 错误部分对我来说似乎没问题——你是如何检查你是作为“正常页面”发送该消息的? (我认为 - 如果我错了请纠正我 - 意味着你得到的是 HTTP 200 而不是 HTTP 404)

关于java - 当我的 webapp 服务器出现错误时,我应该提供什么服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9945201/

相关文章:

java - 在java中调整svg图像的大小

http - 请求被拒绝,因为在 Grails 中没有找到多部分边界

java - 使用 implements Serializable 时在类型 com.sun.proxy.$Proxy127 上找不到属性

eclipse - eclipse中动态web项目打不开欢迎页

c# - 如何用c#拦截并更改http请求

java - Tomcat 7 日志仍然会发出 FINE 和 FINER 日志,尽管 INFO 到处都设置了

java - 如何立即更换背景?

java - 如何在java中复制类

java - OutOfMemoryError 之前的垃圾收集

java - 如何在 MacOS 上嗅探 Java 小程序 HTTP 流量?