В подавляющем большинстве случаев для хостинга используется веб-сервер Apache. Это программа, которая осуществляет прием http-запросов, их обработку и выдачу посетителю сервера конечного результата - html-документов, картинок, файлов и так далее. Домашняя страница проекта Apache - http://www.apache.org.
Apache может настраиваться через файл конфигурации, в который администратор помещает инструкции, непосредственно влияющие на функционирование веб-сервера. Обычно в условиях хостинга конечные пользователи не имеют доступа к файлу конфигурации (httpd.conf), так как не всегда это нужно и не все хостинговые компании могут такую возможность предоставить.
Учитывая эти реалии, а также стремясь добавить в Apache возможности более гибкой настройки, авторы этого веб-сервера реализовали допустимость децентрализованного управления конфигурацией с помощью использования специальных файлов, которые помещаются на диске прямо в веб-пространстве виртуального сервера. Эти файлы обычно называются .htaccess (обратите внимание на первый символ в названии файла - точку), но администратор сервера может менять имя таких файлов по своему желанию с помощью директивы AccessFileName в главном файле конфигурации. Действие команд из файла .htaccess распространяется и на подкаталоги того каталога, в котором этот файл размещен. Файл .htaccess перечитывается при каждом обращении к веб-серверу, так что изменения, внесенные в этот файл, вступают в силу немедленно.
Синтаксис файлов .htaccess в общем случае аналогичен синтаксису главного файла конфигурации. Однако, администратор может ограничивать для пользователей доступ к тем или иным директивам. То есть, несмотря на то, что команда, в принципе, может исполняться из .htaccess, администратор может запретить доступ к конкретной директиве. Учитывайте это при работе.
Список всех директив Apache можно посмотреть на сайте apache.org. В описании каждой директивы есть поле Context. Оно указывает на то, откуда может исполняться данная директива. Если в описании нужной команды в поле Context отсутствует упоминание о возможности использования из .htaccess, значит, Вы не сможете применять эту директиву. Теперь перейдем к практике. Сначала нужно создать в каком-то каталоге веб-сервера файл .htaccess, куда в дальнейшем и будут помещаться директивы. Создать файл можно как с помощью FTP-клиента, так и в unix shell (если он у Вас есть). Далее мы рассмотрим наиболее полезные и часто используемые пользователями хостинга директивы, которые могут быть вызваны из .htaccess.
DirectoryIndex - переопределение файла по умолчанию
Обычно принято файл, который открывается веб-сервером при обращении к каталогу, называть именем index.htm или index.html. Иногда возникает необходимость дать такому файлу другое имя. То есть, сделать так, чтобы при обращении к каталогу открывался не index.html, а, например, файл 123.php3 или /cgi-bin/index.pl. Для этого добавим в файл .htaccess такую строку:
DirectoryIndex 123.php3 /cgi-bin/index.pl
При обращении к каталогу Apache попытается найти один из указанных файлов и показать посетителю его содержимое, а если сделать этого не получится, сервер выдаст пользователю список файлов в каталоге.
Options -Indexes - запрет выдачи листинга пустого каталога
Иногда нужно сделать так, чтобы в случае отсутствия в каталоге файла, который показывается по умолчанию, листинг, то есть список файлов в каталоге, не выдавался. В этом случае можно попробовать добавить в .htaccess такую строчку:
Options -Indexes
В этом случае вместо списка файлов в каталоге посетитель получит HTTP ошибку 403 - access forbidden. Это ошибку можно обработать и показать пользователю какую-нибудь красивую страничку вместо неинформативного сообщения от веб-сервера.
ErrorDocument - обработка ошибок
Иногда в работе сервера возникают ошибки. Здесь речь идет не о сбоях в работе программного обеспечения, а об ошибках в терминах интернет-стандарта на протокол HTTP - RFC2616. Вообще, в RFC ошибки называются "Status Codes", но мы их будем называть именно ошибками - так привычнее. Теория такова: клиент присылает на сервер HTTP-запрос, сервер выполняет какие-то операции и возвращает клиенту код возврата и некоторые данные, текстовые или двоичные - вот что происходит каждый раз, когда Вы с помощью своего браузера обращаетесь к любому веб-серверу. Код возврата - это трехзначное число, на основании которого можно судить о том, насколько успешно был обработан запрос. Так, например, коды возврата, начинающиеся с цифр 1, 2 или 3, являются положительными. А вот если веб-сервер вернул Вам код, начинающийся на 4 или 5, то явно произошла какая-то ошибка. Код 4xx выдается в случае возникновения ошибки в процессе обработки запроса, а 5xx означает критическую ошибку или то, что запрос не может быть выполнен вообще.
Вот список ошибок 4xx и 5xx :
400 - Bad Request
401 - Unauthorized
402 - Payment Required
403 - Forbidden
404 - Not Found
405 - Method Not Allowed
406 - Not Acceptable
407 - Proxy Authentication Required
408 - Request Time-out
409 - Conflict
410 - Gone
411 - Length Required
412 - Precondition Failed
413 - Request Entity Too Large
414 - Request-URI Too Large
415 - Unsupported Media Type
500 - Internal Server Error
501 - Not Implemented
502 - Bad Gateway
503 - Service Unavailable
504 - Gateway Time-out
505 - HTTP Version not supported
Детальное описание каждого кода можно найти в RFC2616.