Пишем файл .htaccess

Полное описание синтаксиса и примеры работы с файлом .htaccess можно найти на сайте apache.org. Здесь их нет.

Экскурс

Какие файлы и как вам их показывать, когда вы заходите на сайт, набирая адрес в строке браузера, осуществляет веб-сервер. Это не секрет :-)
Не секрет также то, что в подавляющем большинстве случаев для UNIX-хостинга используется веб-сервер Apache.

Сервер имеет определенные настройки (конфигурацию), менять которые по вашему желанию никто не будет, ведь они распространяются на всех пользователей этого сервера. Но, как говорится, «если очень хочется», то можно менять некоторые конфигурационные файлы, которые распространяют свое действие только на ваш сайт.
Один из таких файлов — .htaccess.

Как только вы поменяли что-то в .htaccess, то изменения тут же вступают в силу, т.к. файл перечитывается при каждом обращении к веб-серверу. Этот файл обычно находится в корневой директории сервера (вашего сайта). Если файл .htaccess расположен в корневой директории сервера, то его действе распространяется на весь сервер кроме тех папок, где находится другой файл .htaccess. Это на всякий случай, если одного будет мало :-)

Файл .htaccess не будет доступен пользователю сайта из браузера.

Синтаксис

Синтаксис файлов .htaccess в общем случае аналогичен синтаксису главного файла конфигурации сервера.

Первое.
Файл имеет название именно «точка» htaccess и должен быть записан в UNIX-формате.

Второе.
Пути к файлам (директориям) указываются от корня сервера. Например, для папки about, которая находится в корне сервера, путь будет:
/about/

Третье.
Если указываются домены — то с указанием протокола:
http://www.ya.ru

Основные директивы

Обычно принято файл, который открывается веб-сервером при обращении к каталогу, называть index. Если требуется сделать так, чтобы при обращении к каталогу открывался не index.html (или что там у вас), а, например, файл defaul.php или /cgi-bin/index.pl, то для этого пишем в .htaccess:

DirectoryIndex defaul.php /cgi-bin/index.pl

При обращении к каталогу сервер попытается найти один из указанных файлов — index.html (или что там у вас). Если этого сделать не получится, то сервер выдаст пользователю список файлов, которые находятся в каталоге, что не очень красиво.

Обычно это происходит с каталогом изображений, в котором, естественно, находятся только изображения.

Чтобы в случае отсутствия в каталоге файла, который показывается по умолчанию, листинг не выдавался (что очень удобно для тех же папок с изображениями, скриптами, стилями…) добавляем в .htaccess:

Options -Indexes

В этом случае вместо списка файлов в каталоге посетитель получит HTTP ошибку 403 — Access Forbidden (доступ запрещен), что лучше «засвеченных» файлов :-)

При возникновении таких ошибок (4XX или 5XX) посетитель вашего сайта увидит в браузере сообщение от сервера, которое вряд ли можно назвать предельно понятным рядовому пользователю. Такие ошибки лучше всего обработать и отобразить пользователю в приемлемом виде, на которых вы можете человеческим языком объяснить пользователю, что произошло, что делать и что это не он сломал :-)

Для отображения страниц 404.html и 403.html (которые лежат в корневом каталоге сервера) в .htaccess добавляем:

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html

Таким же образом можно отобразить все ошибки, которые выдает сервер.

Заметку об ошибках и о том, как лучше их показать пользователю в приемлемом виде, напишу в скором времени.

Иногда возникает необходимость перенаправить посетителя на другой URL (наприер, при переезде на другой домен). К примеру, редирект на сайт yandex.ru, делатся так:

Redirect / http://www.yandex.ru

Частая ошибка

Если вы создали файл .htaccess, но сервер выдает ошибку 500 — Internal Erorr, то проверьте синтаксис файла или его формат.

Базовый код

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

Options -Indexes
© 2001—2010 Казакевич Алексей Главная страница | Поиск и карта сайта | Valid: xhtml & css