У меня есть страница ошибки 404 на моем сайте, но, делая другие вещи на сайте, страница с ошибкой затрудняет определение недостающих проблем с файлом, поскольку она перенаправляется на заданный файл html или php и берет URL-адрес отсутствующий файл из адресной строки и заменяет его URL-адресом страницы пользовательских ошибок.
Так, например, когда пользователи регистрируются на сайте, у меня есть ссылка на файл php, когда они попадают в submit, но затем браузер берет их прямо на страницу ошибки 404, поэтому я не вижу, что проблема на самом деле ссылку на одну директорию выше, чем должно быть.
Я попытался напечатать URL-адрес отсутствующего файла на странице с помощью php, но сервер просто захватывает URL-адрес страницы ошибки 404, а не исходный URL-адрес отсутствующего файла. Вот как я пытался это сделать: http://members.cox.net/midian/tutorials/php404.htm
Как я могу либо показать страницу пользовательской ошибки, сохраняя исходный отсутствующий URL-адрес в адресной строке, либо распечатать URL-адрес пропавшего файла на странице?
Если страницы с ошибкой перенаправляются на страницу 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>";
Что Salman A опубликовано работает для меня.
Он работал только тогда, когда я использовал относительный путь в файле .htaccess:
ErrorDocument 404 /error-404.php
и не ErrorDocument 404 http://www.mydomain.com/error-404.php
Вторая версия давала мне перенаправленный URL-адрес в адресной строке и в теле страницы.
Кроме того, вам не нужно использовать php-страницу для вашего сообщения 404; страница html также работает, если вы не хотите повторять URL-адрес в теле страницы.