2009-06-18 10 views
2

In Apache würde ich gerne 404 Fehler zurückgeben, wenn ich einen 500 Fehler bekomme.Apache: 404 Fehler anstelle von 500 Fehlern

Es ist ein sehr seltsamer Anwendungsfall, ich weiß, aber ich frage mich, ob es möglich ist.

fand ich diese

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

Was mich führt zu glauben, können Sie ändern, was auf die verschiedenen Fehler passiert. So etwas wie dies würde

Errordocument 404 /cgi-bin/error404.cgi

Errordocument 500 /cgi-bin/error404.cgi

Wie der Artikel vorgeschlagen groß sein, aber ich weiß nicht scheinen Fehler404.cgi auf meiner Ubuntu Installation haben. Irgendeine Idee, wo ich es bekommen kann, oder eine alternative Lösung?

+0

ErrorDocument-Anweisungen ändern die dem Benutzer angezeigte Nachricht, beeinflussen jedoch nicht den Statuscode, den der Server hinter den Kulissen an den Browser meldet. Möchten Sie nur die "500 Error" -Nachricht des Benutzers ausblenden (in diesem Fall würde dies ausreichen), oder möchten Sie tatsächlich verhindern, dass der Server eine 500 an den Browser meldet, unabhängig davon, was der Benutzer sieht? –

+0

Ich suche das auch, ob es mit 'ErrorDocument' oder einer anderen Apache-Lösung ist – JLewkovich

Antwort

0

Sie müssen error404.cgi erstellen. Gehe zu/usr/lib/cgi-bin und erstelle dann eine Datei namens error404.cgi, die entweder Perl sein soll (Standard) oder wenn Python aktiviert ist, kannst du beides verwenden. Wenn Sie nicht entweder Python oder Perl wissen, her ein einfacher Perl-Skript, das für Sie arbeiten soll: (Sie können das Skript von meiner Website unter cwarren.uuuq.com/downloads/perl/404.pl herunterladen

 
#!/usr/bin/perl 
use strict; 
print "<html>"; 
print "<head>"; 
print "<title>404 ERROR!</title>"; 
print "</head>"; 
print "<body>"; 
print "<h1>Sorry for the broken link, but this page is not here!</h1>"; 
print "<br><br>"; 
print "<a href=\"javascript:history.go(-1)\">Click here to go back to the previous page.</a>"; 
exit(0); 

Eine andere Option wäre, den Link zu /var/www/404.html oder etwas zu ändern ..

+4

Zwei Fragen hier: Erstens gibt es keinen Grund, dass dies ein CGI-Skript sein muss. Das Ziel einer ErrorDocument-Direktive kann jede Datei auf dem Webserver sein, einschließlich einfachem HTML. Zweitens: Während dies dem Benutzer "404 Error" sagen wird, wird immer noch ein HTTP-Statuscode von 500 an den Webbrowser zurückgegeben, wenn er als ErrorDocument für einen 500-Fehler verwendet wird. –

+1

Ja, ich brauche eine 400 Fehler zurückgegeben, um den Browser, nicht nur eine andere Seite an den Benutzer zurückgegeben. Danke für den Versuch. – Dave

1

Ich weiß, dass dies Ihre Frage nicht beantwortet, aber sind Sie sicher, dass Sie das wirklich tun möchten? 404 sind sehr unterschiedliche Dinge, die für verschiedene Zwecke gedacht sind: Sie sagen einem Benutzer, dass die URL, die er hat, falsch ist, obwohl es sich in Wirklichkeit um ein temporäres Problem mit Ihrer Anwendung/Ihrem Server handelt als dem Benutzer zu sagen, dass es einen temporar gibt y Problem und sie sollten es später noch einmal versuchen? Oder anders gesagt, warum haben Sie nicht einfach eine benutzerdefinierte 500-Fehlerseite?

+0

Ja, es ist im Grunde eine sehr temporäre Lösung. Es ist ein Fehler, den ich nicht an alten Code beheben kann. Neuer Code wird es in einem Monat ersetzen, aber in der Zwischenzeit brauche ich einen bestimmten Satz von Seiten, die derzeit 500 Fehler melden, um 404 zurückzugeben. – Dave

Verwandte Themen