Что за файл .htaccess, и для чего он нужен?

Подробности статьи
Ссылка: https://help.relevate.ru/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=48
Cтатья №: 48
Создано: 30.09.2009 13:30

Ответ

.htaccess - файл дополнительной конфигурации веб-сервера Apache. Он является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги.

Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess)

В этой статье мы приведём несколько примеров использования данного файла.

Собственные страницы об ошибках

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

1. Создайте свои страницы ошибок и загрузите их на сервер. Допустим, что страница для ошибки 404 будет называться 404.html

2. В файл .htaccess добавьте строку:

ErrorDocument 404 http://domain.tld/404.html

где domain.tld - имя Вашего домена

3. Аналогично следует делать и для других кодов ошибок. Например, для ошибки 500 директива должна быть:

ErrorDocument 500 http://domain.tld/500.html

Наиболее распространённые коды ошибок:

401 - требуется авторизация
400 - неверный запрос
403 - доступ запрещён
500 - внутренняя ошибка сервера
404 - страница не найдена


Запрещение листинга директории

Иногда, по тем или иным причинам, может возникнуть ситуация, когда в директории нет index файла. Например, директория служит хранилищем файлов. При запросе к подобной директории Apache будет отображать список всех файлов, которые в ней находятся. Чтобы запретить листинг, создайте в подобной директории файл .htaccess и добавьте в него строку:

Options -Indexes


Запрещение доступа по IP

Чтобы запретить доступ по HTTP (данная опция касается только HTTP протокола) к директории c определённого IP, создайте в этой директории файл .htaccess и добавьте в него строку:

Deny from xx.xx.xx.xx

где xx.xx.xx.xx - IP адрес, с которого следует запретить доступ

Также Вы можете запретить доступ для всех:

Deny from all


Запрещение доступа к определенному файлу

Чтобы запретить доступ по HTTP (данная опция касается только HTTP протокола) к директории c определённого IP, создайте в этой директории файл .htaccess и добавьте в него блок:

<Files "file.php">

Order Deny,Allow

Deny from all

Allow from xxx.xxx.xxx.xxx

</Files>

Где file.php - название файла к которому нужно ограничить доступ, а xxх.xxх.xxх.xxх - IP адрес, с которого следует разрешить доступ к указанному файлу.


Альтернативные index файлы

Если Вы хотите, чтобы индексными файлами были не только index.html, index.htm и index.php, Вы можете указать собственные имена для подобных файлов с помощью директивы DirectoryIndex, например:

DirectoryIndex index.php index.html index.htm index.shtml default.php my.php


Перенаправления (редиректы)

Если Вы хотите установить редирект для определённого URL Вашего сайта, подобное также возможно сделать с помощью .htaccess, например:

Redirect /admin/passwd.php http://www.site.ru/denied.html

Если разместить файл .htaccess с подобной директивой в корне Вашего сайта, при запросе страницы http://ваш-сайт.ру/admin/passwd.php будет осуществлено перенаправление на http://www.site.ru/denied.html

Перенаправление возможно делать как для файлов, так и для целых директорий, например:

Redirect /admin/ http://www.site.ru/denied.html

Также следует помнить, что все относительные пути в данном файле будут восприняты сервером относительно той директории, в которой находится .htaccess


Защита директорий паролем

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

AuthName "Section Name"
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user

где:

AuthName - заглавие окна для ввода логина/пароля, которое откроет броузер при запросе данной директории

AuthType - тип аутентификации. В данном случае Basic.

AuthUserFile - полный путь к файлу паролей

Require - требования для успешной аутентификации. В данном случае требуются валидные имя пользователя и пароль.

Далее следует создать файл паролей, который Вы указали в директиве AuthUserFile. Данный файл должен состоять из строк формата пользователь:пароль , при этом пароль хранится в зашифрованном виде. Для генерирования содержимого файла Вы можете воспользоваться удобной утилитой, расположенной ниже.

Генератор htpasswd

 

Польозватель:
Пароль:
Пароль (повтор):

 

.htpasswd строка

username:encryptedWithSalt


Более детально о всех директивах .htaccess Вы можете узнать на сайте разработчиков Apache: http://httpd.apache.org/docs/2.2/howto/htaccess.html