A 500 Internal Server Error - очень общая ошибка. Это указывает на то, что сервер обнаружил серьезную ошибку и просто не может обработать запрос как обычно.
Многие из этих 500 ошибок просто не могут быть обнаружены с помощью специального документа с ошибкой, определенного как "поздний" в .htaccess
.
У вас больше шансов, если в конфигурации сервера определено ErrorDocument
. Но даже этого будет недостаточно для некоторых ошибок.
Однако, сказав, что ...
... а также говорит: Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
Я могу получить доступ к странице ошибки, набрав localhost / errors / 500, чтобы не было разрешений.
Редактировать: ошибка 500 была вызвана неправильным запросом механизмом перезаписи. Если вы наберете example.com/index/
, он попытался перейти на /index/.php
, и это вызвало ошибку 500
Похоже, пытается обработать пользовательский (500) документ с ошибкой, но также обнаруживается ошибка 500.
В частности, запрос /index/
приводит к циклу перезаписи, т.е. /index/.php
до /index/.php.php
до /index/.php.php.php
и т. Д. Когда сервер достигает предела для внутренних перенаправлений (по умолчанию 10), он вызывает ошибку 500.
Да, я вижу это также для циклов перезаписи . Даже если ошибка не влияет на обслуживание ErrorDocument; сообщение, кажется, предполагает, что это так. Непосредственный запрос документа об ошибке - это нормально.
Интересно (чисто гипотетически) ... поскольку в этом запросе достигнут предел «внутренних перенаправлений» (из-за цикла перезаписи), ErrorDocument (который также обслуживается внутренним перенаправлением) не может быть обработан потому что этот предел уже достигнут !? Так что это вызывает ошибку 500 по той же причине! Строго говоря, ErrorDocument обслуживается внутренним подзапросом (не внутренним перенаправлением ), хотя документация Apache для директивы LimitInternalRecursion
, по-видимому, группируется " внутренние перенаправления "и" подзапросы "вместе.
Я не могу просто придумать другой способ вызвать ошибку 500, кроме как вызвать ее в коде (как показано ниже - которая работает нормально). Любые (неустранимые) ошибки разбора в коде вызывают ошибку 500 при каждом запросе.
RewriteRule ^foo$ - [R=500]
Вышеуказанное должно обслуживать ваш собственный 500 ErrorDocument как обычно, сам ErrorDocument в порядке.