Перенаправление пользовательской страницы ошибки 404 не показывает URL-адрес отсутствующего файла

У меня есть настраиваемая страница с ошибкой 404 на моем сайте, но при выполнении других действий на сайте страница с ошибкой затрудняет определение проблем с отсутствующим файлом, потому что она перенаправляет на заданный файл html или php и берет URL-адрес отсутствующий файл из адресной строки и заменяет его URL-адресом пользовательской страницы ошибок.

Так, например, когда пользователи входят на сайт, у меня есть ссылка на php-файл, когда они нажимают «Отправить», но затем браузеры перенаправляют их прямо на страницу с ошибкой 404, поэтому я не вижу, что проблема на самом деле ссылка на один каталог выше, чем должна быть.

Я попытался напечатать URL-адрес отсутствующего файла на странице с помощью php, но сервер просто захватывает URL-адрес страницы с ошибкой 404, а не исходный URL-адрес отсутствующего файла. Вот как я пытался это сделать: http://members.cox.net/midian/tutorials/php404.htm

Как я могу показать пользовательскую страницу ошибки, сохранив исходный отсутствующий URL-адрес в адресной строке, или распечатать URL-адрес отсутствующего файла на странице?


person Russell Strauss    schedule 15.09.2011    source источник


Ответы (2)


Если ваши страницы с ошибками перенаправлены на страницу 404 на основе PHP, тогда переменная $_SERVER["HTTP_REFERER"] должна содержать что-то интересное. При этом перенаправление на страницу с ошибкой 404 — плохая практика. Это сбивает с толку как поисковые системы, так и посетителей-людей.

Редактировать

Вот решение, которое работает на Apache. Добавьте эту строку в свой файл .htaccess:

ErrorDocument 404 /error-404.php

Создайте файл с именем error-404.php в корневом каталоге вашего веб-сайта со следующим содержимым:

<?php
echo "<h1>404 Not Found</h1>";
echo "<p>The page {$_SERVER['REQUEST_URI']} was not found on this server</p>";

скриншот страницы ошибки с firebug

person Salman A    schedule 15.09.2011
comment
Я НЕ ХОЧУ перенаправлять, это единственное, что я смог найти в Интернете. Кто-нибудь знает, как показать пользовательскую страницу ошибки без перенаправления? (это мой первоначальный вопрос, если я сделал это неясным в своем посте). Я пытался повторить $_SERVER[HTTP_REFERER], но ничего не печаталось, значит, я делаю это неправильно. - person Russell Strauss; 15.09.2011
comment
Если это сервер Apache, вы можете определить пользовательскую страницу 404 через файл .htaccesss/httpd.conf. Ваша хостинговая компания также может предоставить интерфейс для настройки пользовательской страницы для ошибок 404. Дайте мне знать, если это возможно. - person Salman A; 15.09.2011
comment
Это то, что я пробовал, прежде чем опубликовать вопрос. У меня есть моя пользовательская страница ошибок, определенная в моем .htaccess. Частично работает: перенаправит и распечатает страницу, но проблема в том, что будет распечатывать каждый раз: Страница /404.php не найдена на этом сервере - person Russell Strauss; 15.09.2011

То, что опубликовал Салман А, работает для меня.

Это сработало только тогда, когда я использовал относительный путь в файле .htaccess:

ErrorDocument 404 /error-404.php

и нет ErrorDocument 404 http://www.mydomain.com/error-404.php

Вторая версия давала мне перенаправленный URL-адрес в адресной строке и в теле страницы.

Кроме того, вам не нужно использовать php-страницу для сообщения 404; html-страница также работает, если вы не хотите отображать URL-адрес в теле страницы.

person knighter    schedule 04.03.2014