【问题标题】:Apache: return 404 errors instead of 500 errorsApache:返回 404 错误而不是 500 错误
【发布时间】:2010-11-04 01:56:43
【问题描述】:

在 apache 中,每当我收到 500 错误时,我想返回 404 错误。

这是一个非常奇怪的用例,我知道,但我想知道它是否可能。

我找到了这个

http://www.4webhelp.net/tutorials/misc/errors.php

这让我相信你可以改变发生在不同错误上的情况。像这样的东西会很棒

ErrorDocument 404 /cgi-bin/error404.cgi

ErrorDocument 500 /cgi-bin/error404.cgi

按照文章的建议,但我的 Ubuntu 安装似乎没有 error404.cgi。知道我在哪里可以得到它,或替代解决方案吗?

【问题讨论】:

  • ErrorDocument 指令更改显示给用户的消息,但它们不影响服务器在后台向浏览器报告的状态代码。您是否只想向用户隐藏“500 错误”消息(在这种情况下就足够了),或者您实际上是否希望完全阻止服务器向浏览器报告 500,而不管用户看到什么?
  • 我也希望这样做,无论是使用 ErrorDocument 还是其他一些 Apache 解决方案

标签: apache http-status-code-404 error-reporting


【解决方案1】:

您必须创建 error404.cgi。转到 /usr/lib/cgi-bin 然后创建一个名为 error404.cgi 的文件,它应该是 Perl(默认),或者如果启用了 Python,您可以使用其中任何一个。如果您不了解 Python 或 Perl,这里有一个基本的 Perl 脚本,它应该适合您:(您可以从我的网站 cwarren.uuuq.com/downloads/perl/404.pl 下载该脚本

#!/usr/bin/perl 使用严格; 打印“”; 打印“”; 打印“404 错误!”; 打印“”; 打印“”; print "

抱歉链接失效了,但是这个页面不在这里!

"; 打印“

”; print "点击这里返回上一页。"; 退出(0);

另一种选择是将链接更改为 /var/www/404.html 或其他内容。

【讨论】:

  • 这里有两个问题:首先,没有理由这需要是 CGI 脚本。 ErrorDocument 指令的目标可以是网络服务器上的任何文件,包括纯 HTML。第二:虽然这会对用户“404 错误”,但当用作 500 错误的 ErrorDocument 时,它仍会向 Web 浏览器返回 500 的 HTTP 状态代码。
  • 是的,我需要一个 400 错误返回给浏览器,而不仅仅是一个不同的页面返回给用户。感谢您的尝试。
【解决方案2】:

我知道这不能回答你的问题,但你确定你真的想要这样做吗? 500 错误和 404 是非常不同的东西,用于不同的目的。您告诉用户他们拥有的 url 是错误的,而实际上这很可能是您的应用程序/服务器的临时问题。为什么你宁愿这样做而不是告诉用户有一个暂时的问题,他们应该稍后再试一次?或者换句话说,为什么不只是有一个自定义的 500 错误页面?

【讨论】:

  • 是的,它基本上是一个非常临时的解决方案。这是一个我无权修复某些旧代码的错误。新代码将在一个月内替换它,但同时我需要一组当前报告 500 错误的页面返回 404。
猜你喜欢
  • 2015-05-26
  • 2023-03-12
  • 1970-01-01
  • 2011-11-28
  • 2020-09-12
  • 2015-05-10
  • 2019-07-10
  • 2019-10-17
  • 2016-09-29
相关资源
最近更新 更多