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

Java 当我的webapp服务器出现错误时,我应该提供什么服务?,java,http,tomcat,Java,Http,Tomcat,基本上我不想因为“重复内容”而被搜索引擎惩罚。我担心的是,在某些情况下,webapp服务器可能会在页面上生成异常,否则会显示良好 例如,用户可以在Internet上发布指向以下两个页面的链接: www.example.org/nice-article 及 现在,我的webapp通常会返回两个不同的页面,它们将包含大量的内容,这些内容将被谷歌等很好地索引 我担心的是,在某些情况下,我的webapp服务器在尝试为这些页面提供服务时可能会遇到异常:可能存在我们在以前的版本中没有发现的错误,servl

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

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

www.example.org/nice-article

现在,我的webapp通常会返回两个不同的页面,它们将包含大量的内容,这些内容将被谷歌等很好地索引

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

在这种情况下,据我所知,有一些异常正在发生,但我不确定我所做的是正确的

在我的web.xml中,我有如下内容:

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

java.lang.Throwable
/WEB-INF/jsp/error.jsp


404
/WEB-INF/jsp/error.jsp
我不确定我的web.xml在这里是否正确

我担心的是,在捕获异常的情况下,我会显示error.jsp中的一条消息,告诉您“发生了内部错误,请稍后再试”,但无论出于何种原因,我都会将此作为正常页面而不是错误页面发送(因此,所有断开的页面都会被引用为“重复内容”)因为它们都会或多或少地显示相同的消息)

基本上我想知道两件事:

  • 当爬行机器人(和客户端的浏览器)试图访问一个正常可用的资源时,如果该资源关闭了,我应该抛出什么状态码(是500对吗?)

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


此外,如果您能解释一下我测试这一功能的方法,那就太好了:例如,我可以通过telnet登录并查看是否得到正确的错误代码吗?

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

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

对于不存在的页面,返回404或410以外的代码(或者将用户重定向到另一个页面,例如主页,而不是返回404)可能会有问题。首先,它告诉搜索引擎在那个URL上有一个真实的页面。因此,可以对该URL进行爬网并对其内容进行索引。由于Googlebot花在不存在的页面上的时间太长,您的唯一URL可能不会被快速发现或频繁访问,您的网站的爬网覆盖率可能会受到影响(此外,您可能不希望您的网站在搜索查询[未找到文件])中排名良好


我非常确定任何错误响应代码的内容都不会被索引,因此不应该因为一般错误页面上明显重复的内容而惩罚您

我不敢相信爬虫程序不会检查HTTP响应代码。他们肯定会识别500,这是每个Web服务器返回的未捕获异常(至少在默认情况下是如此)。@biziclop:是的,我知道。。。我担心的是,我想确定我确实在为500人服务。不知何故,我担心我会捕捉到异常并发送常规页面,这些页面都会写入内容:“错误500:内部服务器错误等”,但不会使用500/503.+1。。。我意识到通过telnet我可以检查所有的状态码。我确实拿到了500英镑。我会看看我是否应该把这个改成503,看看这个帖子-
<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>