Перенаправление страницы ошибки 404 не показывает URL отсутствующего файла - PullRequest
2 голосов
/ 15 сентября 2011

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 15 сентября 2011

Если ваши страницы ошибок перенаправлены на страницу 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>";

screenshot of the error page with firebug

2 голосов
/ 04 марта 2014

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

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

ErrorDocument 404 /error-404.php

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

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

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

...