У меня есть куча директив ErrorDocument в моем файле .htaccess, чтобы уловить почти все возможные ошибки, которые Apache может использовать для пользователя, и перенаправить упомянутого пользователя на мой контроллер ошибок, который затем будет отображать ошибку у большего пользователя дружелюбие. Однако это не работает.
Например, когда я ввожу неверный URL-адрес, например mysite.com/""##$##$! Я всегда получаю сообщение об ошибке Apache по умолчанию 403 вместо перенаправления на файл errors.php. Ниже приведена директива, которую я использую. Нужно ли мне что-то делать, чтобы заставить его работать? (AllowOverride All установлен)
ErrorDocument 403 /errors.php
Если это неправильный подход к абсолютной обработке пользовательских ошибок, пожалуйста, дайте мне знать, я был бы признателен за толкание в правильном направлении.
Спасибо!
Изменить: О, просто подумал, что я бы сказал об этом. Я написал свою собственную структуру MVC для перенаправления запроса, и он работает хорошо. Изнутри PHP, если пользователь запрашивает неэксентирующий URL, моя собственная ошибка 404 будет срабатывать только штрафом (или любой другой ошибкой, которую я определил). Так что в основном, если я вхожу в mysite.com/!!!! в URL-адрес, он будет работать, и я получаю 404. Однако всякий раз, когда я запускаю запрос с символом двойной кавычки, срабатывает ошибка Apache 403 по умолчанию. Странно. Кроме того, ошибка 500 не будет перенаправляться на errors.php, а также просто вернет экран Apache 500 по умолчанию (например, при тестировании с заголовком ( "HTTP/1.0 500 Internal Server Error" ); die();).
Изменить 3: я просто попытался разместить ErrorDocument 200 "message"
в моем файле .htaccess, и ничего не произошло, открытая страница открывается нормально. В худшем случае это должно застрять в бесконечном цикле. Лучший сценарий, он должен выводить "сообщение". Он ничего не сделал, он просто проигнорировал ErrorDocument. Apache Access Log отмечает нормальный заголовок 200 OK, и все же он полностью игнорируется .htaccess.