Я знаю, что это распространенный вопрос, но я не уверен, почему это не работает на моем локальном хосте (WAMP).
Я хотел бы перенаправить ошибку 500 на свою страницу входа. Я попробовал следующее:
ErrorDocument 500 http://localhost/mysite/login.php
ErrorDocument 500 C:/wamp64/www/mysite/login.php
ErrorDocument 500 mysite/login.php
ErrorDocument 500 login.php
Ни один из них не смог перенаправить меня на страницу входа.
решение1
Я тестировал что-то в PHP. Я хотел проверить, что произойдет, если я отключу отчет об ошибках. Как и ожидалось, я получил ошибку 500. Я хотел бы настроить перенаправление для этого с помощью htaccess
Вы не можете определить ErrorDocument .htaccess
для обработки этой ситуации.
Сам PHP вернет пустой ответ 500, если display_errors
он выключен и в вашем приложении возникает неустранимая ошибка.
Чтобы настроить/обработать этот ответ, вам необходимо определить свой собственный обработчик ошибок PHP. https://www.php.net/manual/en/book.errorfunc.php
(Но учтите, что если у вас фатальныйошибка синтаксического анализав вашем скрипте, то ваш обработчик ошибок, вероятно, все равно не будет вызван, но этого никогда не должно происходить на рабочем сервере.)
Не могли бы вы указать на какую-нибудь документацию по этому поводу?
К сожалению, у меня нет центральной точки отсчета для этого. Просто это так работает...
Apache ErrorDocument срабатывает только тогда, когда сам Apache инициирует ответ об ошибке. (Хотя пользовательский 500 ErrorDocument не будет срабатывать длявсеApache 500 отвечает, и если он определен поздно, .htaccess
то, вероятно, вообще не будет многого ловить. Это должно быть определено в конфигурации сервера / виртуальном хосте.)
Для того, чтобы Apache ErrorDocument сработал, когда PHP отправил ответ, Apache должен перехватить и переопределить ответ - этого не происходит. Точно так же, как вы можете отправить 404 из вашего PHP-скрипта, Apache не перехватывает это, чтобы отправить ответ Apache 404.