代码之家  ›  专栏  ›  技术社区  ›  animuson Hemanshu

如何检测导致内部服务器错误的页面?

  •  2
  • animuson Hemanshu  · 技术社区  · 14 年前

    ErrorDocument 500 http://www.example.com/500
    

    全部的 同一处理页的内部服务器错误。但是,我的问题是,它不发送任何有关导致错误的页面的信息,而是重定向页面。我试着把它改成 ErrorDocument 500 index.php?500 但这只会在尝试定位文件时导致第二个内部服务器错误。关于如何成功地将其重定向到自定义的500错误页面,并且仍然获取有关最初导致错误的页面的信息,有什么想法吗?

    4 回复  |  直到 9 年前
        1
  •  3
  •   Charles    14 年前

    在你的 ErrorDocument 声明,您正在向远程页面提供一个URL。结果,Apache向用户发送了一个Location头,用户就可以随心所欲了。

    相反,请将URL更改为将处理错误的本地脚本的绝对路径:

    ErrorDocument 500 /500.php
    

    无法将用户发送到其他地方,也无法捕获ErrorDocument本身中的信息。另一方面,如果出于某种原因仍希望以这种方式处理,那么脚本可以捕获信息,然后重定向用户。

        2
  •  1
  •   Gab Royer    14 年前

    referrer http请求的字段,以确定调用方之前在哪个URL上

        3
  •  0
  •   Daniel Egeberg    14 年前

    检查Web服务器的访问日志。在那里,您将能够看到哪个请求导致500响应代码。

    在Apache中(使用默认的日志格式),成功的请求(200 OK)可能如下所示:

    127.0.0.1 - - [19/Jul/2010:18:25:54 +0200] "GET / HTTP/1.1" 200 663 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8pre) Gecko/20100718 Ubuntu/10.04 (lucid) Namoroka/3.6.8pre"
    

    一个500英镑的请求可能是这样的:

    127.0.0.1 - - [19/Jul/2010:18:24:37 +0200] "GET / HTTP/1.1" 500 631 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8pre) Gecko/20100718 Ubuntu/10.04 (lucid) Namoroka/3.6.8pre"
    

    响应代码在第六列。

    您还可以检查PHP错误日志,它将包含所有PHP错误,假设您已经启用了错误日志(您应该这样做)。

        4
  •  0
  •   chanchal1987    14 年前

    您的apache服务器记录发生的每个错误(尽管它是可配置的)。您可以使用打开和管理此文件 FileStream http://httpd.apache.org/docs/2.2/logs.html 查看有关Apache日志文件的更多信息。您可以从中获得有关.htaccess的教程 http://www.freewebmasterhelp.com/tutorials/htaccess/ .

    要进行您自己的处理,请创建一个类似error.PHP的PHP文件,它将处理您的错误。您可以使用.htaccess文件重定向它。之后,如果你想进入一个页面,你可以使用 header()