Как установить страницу 404
Страница 404 - это страница, которая открывается при ошибке 404. Ошибка 404 - это попытка открыть несуществующую страницу. То есть, когда Вы вводите неправильный адрес (или переходите по неработающей ссылке), то Вы как раз переходите на эту страницу. Безусловно, у самого браузера есть встроенная страница. Но, думаю, что Вам бы хотелось оформить эту страницу как-то по-другому, возможно, написать какой-нибудь свой текст и так далее. О том, как установить страницу 404 на свой сайт, я и расскажу.
Первое, что необходимо сделать - это создать файл .htaccess. Обратите внимание, что имени у этого файла нет, а расширение "htaccess". Если Вы работаете в Unix, то проблем с созданием не возникнет. А вот если Вы работаете в Windows, то создать файл .htaccess можно таким образом (так делаю я, хотя, возможно, есть более простые способы):
- Открыть блокнот.
- Выбрать пункт меню "Сохранить как".
- Введите имя файла ".htaccess".
- Выберите тип файла "Все файлы".
- Сохраните.
В результате, у Вас появится файл .htaccess. Скопируйте его в корень своего сайта. Теперь Вы можете его открыть (например, в том же блокноте) и написать там такую строку:
ErrorDocument 404 /404.html
Теперь создайте в корне сайта страницу "404.html", в которой пишите любой HTML-код, например, такой:
<html>
<head>
</head>
<body>
<h1>Страница не существует!</h1>
<p>Проверьте правильность ввода адреса</p>
<p>С Уважением, <a href = ''>Мой сайт</a></p>
</body>
</html>
Таким образом, люди будут видеть не стандартную страницу в браузере, а ту страницу, которую создали Вы.
Напоследок, хочется сказать одну важную вещь. Если Вы работаете на локальном компьютере, то на нём должен быть установлен сервер (например, пакет Denwer, в который входит и сервер Apache, и PHP, и MySQL и много чего ещё).
-
- Михаил Русаков
Комментарии (23):
Подскажите, у меня директива ErrorDocument 404 /404.html ссорится с правилом для ЧПУ: RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*) index.php [L]. 404 ошибка появляется только если отключить это правило. А иначе можно набрать после url'a любые символы, и будет нормальный редирект, а ошибка не выскочит.
Ответить
У Вас противоречия здесь. Вы хотите несуществующие файлы одновременно передать на index.php и отправить на 404. Такого быть не может. Нужно определиться, отдавать 404 или использовать ЧПУ. Я, например, решил проблему следующим образом: передавал в index.php, а уже внутри скриптов возвращал 404 через header() и делал редирект на страницу для ошибок.
Ответить
Спасибо! Так и знал, что зря htaccess мучаю... Жаль сайт на smarty, в котором я ни бум-бум((
Ответить
как зделать нормальный сайт а то получильчудо дизай как встороить??О_о
Ответить
Денвер выдает ошибку: В текущей директории расположен файл .htaccess с ошибочными директивами. Например, Apache в Денвере не поддерживает устаревший модуль mod_charset, имеющийся у некоторых хостеров, и расценивает директивы вроде CharsetDisable как ошибочные. Для того, чтобы исправить ситуацию, отредактируйте файл .htaccess, чтобы он выглядел примерно так: <IfModule mod_charset.c> CharsetRecodeMultipartForms off # и другие директивы mod_charset </IfModule>
Ответить
Фрагмент файла .htaccess для правильной обработки ошибок: ErrorDocument 400 /error.php?400 ErrorDocument 401 /error.php?401 ErrorDocument 403 /error.php?403 ErrorDocument 404 /error.php?404 ErrorDocument 500 /error.php?500 Текст скрипта error.php: <?php $id = $argv[0]; $id = abs(intval($id)); if (!$id) $id = 404; // ассоциативный массив кодов и описаний $a[401] = "Требуется авторизация"; $a[403] = "Пользователь не прошел аутентификацию, доступ запрещен"; $a[404] = "Документ не найден"; $a[500] = "Внутренняя ошибка сервера"; $a[400] = "Неправильный запрос"; // определяем дату и время в стандартном формате $time = date("d.m.Y H:i:s"); // эта переменная содержит тело сообщения $body =<<Запрошенный Вами URL: http://$SERVER_NAME$REQUEST_URI Ваш IP: $REMOTE_ADDR Ваш браузер: $HTTP_USER_AGENT Текущее время сервера: $time END; if ($HTTP_REFERER) $body .= "Вы пришли со страницы: $HTTP_REFERER \n"; if ($HTTP_X_FORWARDER_FOR) $body .= "Ваш IP через прокси: $HTTP_X_FORWARDER_FOR \n"; ?>
Ответить
Подскажите пожалуйста как настроить Denwer
Ответить
http://myrusakov.ru/rabota-denwer.html
Ответить
Вместо того что у вас написано у меня пишет Страница несуществует!/h1> Проверьте правильность РІРІРѕРґР° адреса РЎ Уважением, РњРѕР№ сайт Как это исправить?
Ответить
http://myrusakov.ru/php-encoding-problems.html
Ответить
Еще одна ошибка) 1-ый абзац: Но, думаю, что Вам бы хотелось оформить эту страницу как-то по-другому, возможно, написать какой-нибудь свой текст итак далее( и так далее!)
Ответить
Спасибо, исправил!
Ответить
Пожалуйста подскажите, .htaccess перенаправляет как и хотела на мою страницу 404.html , но напрочь сбивает код сайта. Вот что получается http://em.shopargo.com/sad/sazan_paket.htm, а нужно вот так чтоб было http://em.shopargo.com/404.html Помогите пожалуйста!
Ответить
Для начала добейтесь валидного кода.
Ответить
очень существеная помощь...
Ответить
был лишний один </div> !!! Ура заработала!!! СПАСИБО!
Ответить
Подскажите, пожалуйста, обязательно ли сообщать серверу об ошибке 404? Поясню: у меня скрипт PHP сам решает, какой контент выдать браузеру по ссылке. Если ссылка не предусмотрена на сайте, то в контент вывожу сообщение о некорректной ссылке. Правильно ли так делать (с точки зрения этикета программистов)?
Ответить
Правильно, но заголовок 404 надо обязательно отправлять.
Ответить
Большое спасибо!
Ответить
А как скопировать .htaccess в корень сайта?
Ответить
Так же как и обычный файл. Но если его нет, то нужно создать: http://myrusakov.ru/php-create-htaccess.html
Ответить
Спасибо
Ответить
Не получается. Хром выдает стантартный ответь Веб-страница не найдена
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.