Статьи ⇒ Общее ⇒ Страницы ошибок .htaccess

Страницы ошибок .htaccess

Опубликовано: 4 окт 2011 в 09:28
Автор: Dave Child  Перевод: freeeeez 

Apache позволяет настраивать сервер на уровне каталога используя .htaccess файлы. Это руководство подробно объясняет, как пользоваться ими для обслуживания пользовательской ошибки 404 (страница не найдена) и других общих страниц ошибок.

В Apache вы можете настроить каждый каталог на сервере индивидуально, ограничивая или допуская нужные свойства. Поэтому если вы не имеете прямого доступа к серверу, управлять свойствами сервера можно через .htaccess файлы.

Настройка страницы ошибки 404

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

Еще один плюс данной настройки заключается в том, что можно установить отправку страницы ошибки (например 404) по электронной почте, что скажет вам о том кто и когда пытался загрузить не существующую страницу, а также позволить исправить неработающие ссылки.

Для начальной настройки файла .htaccess откройте блокнот (а еще лучше редактор с подсветкой синтаксиса, вроде Notepad++ или Taco) и добавьте следующую строку:

ErrorDocument 404 / 404.html

Далее вам нужно сохранить файл. Вы должны сохранить его в виде ".htaccess". Не ".htaccess.txt" или "mysite.htaccess" — а просто ".htaccess".

Теперь вам нужно создать страницу с именем 404.html, содержащую все, что вы хотите донести пользователю, который запрашивает несуществующую страницу. Загрузите оба файла на свой сервер и введите любой выдуманный адрес. Вместо стандартного сообщения об ошибке, вы должны увидеть собственную страницу 404! Если вы этого не видите, то скорее всего ваш сервер не поддерживает .htaccess файлы или данная услуга отключена. Обратитесь к администратору сервера или в службу поддержки. Возможно эти же настройки можно ввести через IIS.

Если же все хорошо, и вы читаете свою страницу 404.html, то вы можете создать другие страницы ошибок, для полного набора сообщений об ошибках сервера. Ведь кроме ошибки 404 есть и другие (401, 500 и др.). Вы также можете написать свои страницы на PHP или ASP, а не только на HTML.

Можно создать множество страниц для всех кодов состояния сервера, чтобы персонализировать любые ошибки. Вы также можете использовать чистый HTML в самом HTACCESS файле:

ErrorDocument 404 "Упс, ошибочка вышла! <b>Страница не найдена</b>. Воспользуйтесь картой сайта или <a href="mailto:owner@site.com">сообщите по электронной почте</a> администратору для получения помощи.

Ремонт ноутбуков Новогиреево

Коды ответов сервера

Кодом ответа сервера явяется трехзначный номер, который он посылает пользователю в ответ на запрос. Они говорят пользователю, является ли запрос корректным и может ли он завершен, а также требует ли сервер дополнительной информации. Как правило эти коды передаются в HTTP-заголовке, поэтому обычные пользователи их не видят. Самые распространенные коды ошибок сервера, это 400, 401, 403, 404 и 500, так что было бы разумно разместить информацию в .htaccess файл по установке собственных страниц ошибок для данных кодов.

Для того, чтобы видеть страницы ошибок для следующих ответов сервера, необходимо создать их и написать в .htaccess файле следующие строки:

ErrorDocument 400 / 400.html

ErrorDocument 401 / 401.html

ErrorDocument 403 / 403.html

ErrorDocument 404 / 404.html

ErrorDocument 500 / 500.html
  • Информационные
    • 100 Продолжать.
    • 101 Переключение протоколов.
    • 102 Идёт обработка.
  • Успешно.
    • 200 OK.
    • 201 Создано.
    • 202 Принято.
    • 203 Информация не авторитетна.
    • 204 Нет содержимого.
    • 205 Сбросить содержимое.
    • 206 Частичное содержимое.
    • 207 Многостатусный.
    • 226 IM использовано.
  • Перенаправление.
    • 300 Множество выборов.
    • 301 Перемещено окончательно.
    • 302 Найдено.
    • 303 Смотреть другое.
    • 304 Не изменялось.
    • 305 Использовать прокси.
    • 306 (зарезервировано).
    • 307 Временное перенаправление.
  • Ошибка клиента.
    • 400 Плохой запрос.
    • 401 Неавторизован.
    • 402 Необходима оплата.
    • 403 Запрещено.
    • 404 Не найдено.
    • 405 Метод не поддерживается.
    • 406 Не приемлемо.
    • 407 Необходима аутентификация прокси.
    • 408 Время ожидания истекло.
    • 409 Конфликт.
    • 410 Удалён.
    • 411 Необходима длина.
    • 412 Условие ложно.
    • 413 Размер запроса слишком велик.
    • 414 Запрашиваемый URI слишком длинный.
    • 415 Неподдерживаемый тип данных.
    • 416 Запрашиваемый диапазон не достижим.
    • 417 Ожидаемое не приемлемо.
    • 418 Я - чайник.
    • 422 Необрабатываемый экземпляр.
    • 423 Заблокировано.
    • 424 Невыполненная зависимость.
    • 425 Неупорядоченный набор.
    • 426 Необходимо обновление.
    • 449 Повторить с...
    • 456 Некорректируемая ошибка....
  • Ошибка сервера.
    • 500 Внутренняя ошибка сервера.
    • 501 Не реализовано.
    • 502 Плохой шлюз.
    • 503 Сервис недоступен.
    • 504 Шлюз не отвечает.
    • 505 Версия HTTP не поддерживается.
    • 506 Вариант тоже согласован.
    • 507 Переполнение хранилища.
    • 509 Исчерпана пропускная ширина канала.
    • 510 Нет расширения.
Источник: AddedBytes внешняя ссылка
Тэги:  •  • 
11 комментариев
13 490 просмотров


#1 lamga, 16 янв 2012 в 17:52
Если все так просто почему бы просто не удалить эту 401-404 др.проблемные страницы
#2 freeeeez, 16 янв 2012 в 17:58
Не понял вопроса. Эти страницы возникают при ошибках клиентской стороны. Страница 404 сообщает о том, что запрашиваемая страница не найдена или она не существует.
#3 Анастасия, 29 янв 2013 в 11:19
Спасибо! Мне оччень понравилось!
#4 Александр, 3 апр 2013 в 18:08
Спасибо за полезную информацию!
#5 Владимир, 21 авг 2013 в 09:34
A 301 код как разместить в htaccess
#6 Владимир, 21 авг 2013 в 09:36
Виноват не 301, а 304 Last Modified как сделать в htaccess
#7 freeeeez, 21 авг 2013 в 09:36
Например так
RewriteCond %{HTTP_HOST} ^securityscripts.ru
RewriteRule (.*) http://www.securityscripts.ru/$1 [R=301,L]
Переадресация домена без www на домен с www

А статус 304 можно послать таким кодом:
FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"

Здесь в качестве времени кэша указан один день. Эксперементируйте!
#8 Владимир, 21 авг 2013 в 10:11
Спасибо. У меня сделано примерно тоже самое
# Begin cache control #
ExpiresActive on

FileETag All
ExpiresDefault "now plus 1 hours"
Header set Cache-Control "max-age=3600, public"

# End cache control #
Но захожу на сервис http://last-modified.com/ru/
пишет Last-Modified не найден!
Хотелось реализовать на htaccess
#9 freeeeez, 21 авг 2013 в 16:25
Мне кажется этот код отвечает все таки за кэширование, а не за выдачу заголовка Last-Modified. Чтобы сервер отдавал заголовок и сравнивал изменилась ли страница используйте:
$num=mt_rand(2000,10000);
$LastModified_unix = time()-$num; // время последнего изменения страницы
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);

Здесь время последнего изменения страницы задается с рандомным интервалом от текущего, чтобы не вызывать подозрений у поисковых систем.
#10 Анастасия, 3 сен 2013 в 17:52
Добрый день! Подскажите, пожалуйста, как настроить 404 ошибку для страниц с параметрами вида: site.ru/?qwerty ?
Заранее благодарна:)
#11 denis, 13 авг 2014 в 21:35
здравствуйте у меня есть маленькая прозьба , мы можете мне помочь , система файл , что бы я мог заходить , а то показует ошибка 503 , раньше такого не было , меня просто занесли в черный список , я знаю что как то можно убрать но я не знаю как , я инвалид просто простой человек, я посмотрел ваше видео я думаю вы мне поможете , что вы можете мне помочь можете меня добавить в скайп я вам все подробно обьясню denis1986628 буду вас ждать

Оставить комментарий:

Имя:
Email:
Сайт:
Комментарий:

Допустимые теги: <em> • <strong> • <u> • <sub> • <sup> • <blockquote>

Проверочный код:

Введите проверочный код, для подтверждения, что вы не робот.
P.S. Если вы робот, то, к сожалению, вы
не сможете прочитать символы с картинки.