триггер 403 в php, так что он показывает ErrorDocument
Недавно я настроил пользовательские документы об ошибках для своего сервера.
Я начал со страницы 404, и это работает как шарм: файл не найден автоматически показывает указанный 404.PHP-страница.
Однако с 403 у меня возникли некоторые проблемы. Я настраиваю его точно так же, но получаю только чистую страницу. Он не показывает 403.php страница, как установлено в .htaccess документ.
Есть идеи?
Вот мой код:
.htaccess:
Options -Indexes
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
Php:
<?php
header("HTTP/1.1 403 Unauthorized");
exit;
?>
2 ответов:
Документ об ошибке, определенный в конфигурации сервера, загружается только тогда, когдасервер (Apache) обнаруживает ошибку 403.
Если вы заставляете ошибку через PHP, например, отправить код состояния 403, это происходит в PHP, а не в Apache.
Итак, если вы уже знаете , что сайт, который я хочу визуализировать, не будет работать из-за несанкционированного, зачем оставлять это на apache, что произойдет?
<?php header("HTTP/1.1 403 Unauthorized"); // either: header("Location: /403.php"); // or: include('403.php'); exit; ?>Я начал с 404 страницы, и это работает как шарм:
Это ты - уверен?
У вас есть скрипт, отправляющий 404 и перенаправляющийся на 404.php? Или вы просто открыли несуществующий URI и были перенаправлены?
Для вашего сервера 403 страницы. (Перейдите на запрещенный URL-адрес на вашем сервере или на любую страницу 403, которая вам нравится)
Щелкните правой кнопкой мыши и выберите "Просмотр источника". Выберите все исходники и сохраните их в файл на вашем домене, например: http://domain.com/403.php
Теперь перейдите на вашу реальную запрещенную страницу (или запрещенную ситуацию в какой-то части вашего php) пример: http://domain.com/members/my_forbidden_page.php
Повторите этот код ниже перед любым выводом HTML или заголовком! (даже пробел заставит PHP отправить html / TEXT HTTP заголовок, и он не будет работать) код ниже должен быть вашей первой строкой!
<?php header('HTTP/1.0 403 Forbidden'); $contents = file_get_contents('/home/your_account/public_html/domain.com/403.php', TRUE); exit($contents);Я проверил и проверил с последними посетителями CPANEL, и это зарегистрировано как точное событие 403.
Comments