Ich weiß, dass dies eine häufige Frage ist, aber ich bin nicht sicher, warum dies auf meinem lokalen Host (WAMP) fehlschlägt.
Ich möchte einen 500-Fehler auf meine Anmeldeseite umleiten. Ich habe Folgendes versucht:
ErrorDocument 500 http://localhost/mysite/login.php
ErrorDocument 500 C:/wamp64/www/mysite/login.php
ErrorDocument 500 mysite/login.php
ErrorDocument 500 login.php
Bei allen diesen Versuchen ist die Weiterleitung zu meiner Anmeldeseite fehlgeschlagen.
Antwort1
Ich habe etwas in PHP getestet. Ich wollte bestätigen, was passiert, wenn ich die Fehlerberichterstattung deaktiviere. Wie erwartet erhielt ich einen 500-Fehler. Ich möchte hierfür eine Umleitung mit htaccess konfigurieren
Sie können kein ErrorDocument definieren, .htaccess
um dies zu behandeln.
PHP selbst gibt eine leere 500-Antwort zurück, wenn display_errors
es deaktiviert ist und in Ihrer Anwendung ein nicht behebbarer Fehler auftritt.
Um diese Antwort anzupassen/zu verarbeiten, müssen Sie Ihren eigenen benutzerdefinierten PHP-Fehlerhandler definieren. https://www.php.net/manual/en/book.errorfunc.php
(Beachten Sie jedoch, dass bei einem tödlichenAnalysefehlerin Ihrem Skript, dann wird Ihr Fehlerhandler wahrscheinlich trotzdem nicht aufgerufen – aber das sollte auf einem Produktionsserver nie passieren.)
könnten Sie möglicherweise auf eine Dokumentation dazu verweisen?
Leider habe ich dafür keinen zentralen Bezugspunkt. Es ist einfach die Art, wie es funktioniert ...
Das Apache ErrorDocument wird nur ausgelöst, wenn Apache selbst die Fehlerantwort auslöst. (Ein benutzerdefiniertes 500 ErrorDocument wird jedoch nicht ausgelöst füralleApache 500-Antworten und wenn es spät definiert wird, .htaccess
wird es wahrscheinlich nicht viel abfangen. Dies sollte in der Serverkonfiguration / im virtuellen Host definiert werden.)
Damit das Apache ErrorDocument ausgelöst wird, wenn PHP eine Antwort gesendet hat, müsste Apache die Antwort abfangen und überschreiben – das passiert nicht. Genauso wie Sie möglicherweise eine 404 von Ihrem PHP-Skript senden, fängt Apache diese nicht ab, um die Apache 404-Antwort zu senden.