Создавайте собственные страницы ошибок PHP в cPanel, не перенаправляя их со страницы, на которой возникла ошибка.

Я пытаюсь настроить на своем веб-сервере настроенные документы / страницы с ошибками, но с включенным в них PHP кодом, не перенаправляя их со страницы, на которой возникла ошибка.

Допустим, мы переходим к http://website.com/pages/1, и это должно было вызвать ошибку 500, по по умолчанию страница будет просто пустой белой страницей с текстом «Error 500 (Internal Server Error)», который будет выглядеть что-то типа:

http: /  /i.imgur.com/WLO7JkL.png

Как видно из приведенного выше, он НЕ перенаправлялся со страницы, на которой возникла ошибка. Я хочу, чтобы эта страница выглядела «частью веб-сайта», но с включенным в нее содержимым PHP.

Я не могу включить содержимое PHP на страницы ошибок в cPanel, отредактировав страницы, которые вы видите ниже:

http: /  /i.imgur.com/jtYjHj8.png

Если бы я отредактировал страницу с ошибкой 500 выше, с содержимым ниже проблема была бы в том, что http://website.com/pages/1 перенаправлял на http://website.com/500.shtml, а затем, в свою очередь, перенаправлял на http://website.com/500.php < / em>

Я НЕ хочу, чтобы он вообще перенаправлялся, иначе это означает, что обновление страницы, по сути, будет просто обновлять страницу 500.php, а не обновлять /pages/1

<script language="javascript">
    window.location.href = "http://www.website.com/500.php"
</script>
<meta http-equiv="refresh" content="0;URL='http://website.com/500.php'" />  

Та же самая проблема могла бы существовать, только если бы это было 2 перенаправления цепочки, вместо этого было бы просто 1 перенаправление, используя следующее в файле .htaccess

ErrorDocument 400 http://website.com/400.php
ErrorDocument 401 http://website.com/401.php
ErrorDocument 403 http://website.com/403.php
ErrorDocument 404 http://website.com/404.php
ErrorDocument 500 http://website.com/500.php

Текущий результат: перенаправление на /500.php

Ожидаемый результат: отображение 500.php на / на http://website.com/pages/1 без перенаправления

Как я могу иметь настраиваемые страницы ошибок с содержимым php БЕЗ перенаправления со страницы, на которой возникла ошибка?

Есть ли способ сделать это через root (могу ли я заставить свои хосты что-то делать, если да что?)


person Ryflex    schedule 16.09.2015    source источник
comment
@Kuya, как вы вообще планируете использовать обработчик ошибок для внутренней ошибки сервера, обработчики ошибок даже не всегда вызываются должным образом, если возникает внутренняя ошибка сервера. И я уже сказал это, но скажу еще раз, создание полной страницы вместо простого использования htaccess глупо   -  person Crecket    schedule 19.09.2015
comment
@Kuya Вы не выбираете биты из сообщения и не отвечаете на эти части, вы отвечаете на вопрос, который выделен жирным шрифтом и имеет знак вопроса в конце: Как я могу создавать собственные страницы ошибок С помощью php контент БЕЗ перенаправления со страницы, на которой возникла ошибка?. В моем сообщении ЧЕТКО говорится о перенаправлении и предотвращении перенаправления.   -  person Ryflex    schedule 20.09.2015


Ответы (2)


Как ответили другие, это должно сработать:

ErrorDocument 500 /500.php

Если вы не укажете полный URL-адрес, он просто отобразит страницу (внутреннее перенаправление), если вы укажете полный URL-адрес, он выполнит перенаправление обратно к этому клиенту. Это описано в Apache здесь: http://httpd.apache.org/docs/2.4/mod/core.html#errordocument

Обратите внимание, что когда вы указываете ErrorDocument, который указывает на удаленный URL-адрес (т. Е. Что-либо с таким методом, как http, перед ним), HTTP-сервер Apache отправит перенаправление клиенту, чтобы сообщить ему, где найти документ, даже если документ оказывается на том же сервере.

Тот факт, что вышеперечисленное не работает для вас, означает одно из нескольких:

  1. Вы делаете это неправильно и по-прежнему указываете полный URL, хотя утверждаете, что это не так.
  2. Cpanel добавляет полный URL-адрес (не уверен, как вы редактируете файл .htaccess или это делается через указанный выше графический интерфейс).
  3. Ваш файл .htaccess игнорируется (возможно, из-за того, что вы устанавливаете значения в графическом интерфейсе пользователя или, возможно, из-за того, что FileInfo не установлен на уровне сервера, поэтому его нельзя указать в файле .htaccess (см. Здесь: http://httpd.apache.org/docs/2.4/custom-error.html), и в этом случае он должен получать полный URL-адрес из другой конфигурации.
  4. Сценарий 500.php сам выполняет перенаправление (должно быть очевидно из инструментов разработчика, если сохранить журнал и посмотреть, будет ли возвращена одна или две страницы).
  5. В Apache есть ошибка (о которой я и другие не знаем).
  6. Магия

Вы можете проверить эти вещи?

Может также помочь узнать, на какой версии Apache вы используете?

Вы также пробовали простой файл 500.html, чтобы посмотреть, работает ли он без перенаправления? Теоретически файл 500.php тоже должен быть в порядке, но было бы интересно сузить его (а также показать, было ли это изменение на 500.html принято и использовано или оно все еще указывает на 500.php, что, возможно, будет покажите, что это было взято из другой конфигурации, чем вы думаете).

person Barry Pollard    schedule 22.09.2015

Если вы добавите что-то подобное в свой файл .htaccess, он должен просто отобразить страницу с ошибкой без перенаправления. Я никогда не использовал абсолютные пути, как вы делаете в своем примере, для страниц ошибок, поэтому я не уверен, какое поведение это вызывает

ErrorDocument 404 /404.php 
person Crecket    schedule 18.09.2015
comment
ErrorDocument 500 /500.php перенаправляет на website.com/500.php - person Ryflex; 19.09.2015