Всё про файл .htaccess

Sam Jack

Капитан-Узурпатор
Команда форума
Созидатель
5 Май 2015
13.917
4.895
113
Россия
null-prog.ru
Файл .htaccess позволяет администратору управлять почти всеми настройками сервера Apache, касательно всего сайта или только определённых директорий, потому как структура папок на сервере имеет древовидную структуру и если поместить файл .htaccess в одну из них, то можно получить управление именно этой директорией, не влияя на работу других. Если в директории "DIR" расположен такой файл .htaccess, а во вложенном каталоге по отношению к нему есть еще один .htaccess, то во вложенной директории действуют настройки последнего. Вот таким образом, новый .htaccess отменяет предыдущий.
Данный фал вы не увидите через протоков http, следоватьно пользователи не смогут увидеь всех настроек вашего сайта.

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


Если сервер при обходе директорий, находит синтаксические ошибки в файле .htaccess, то он прекращает обработка. Вот некоторые из них, а точнее: самые популярные ошибки при работе с этим файлом:

1. Путь к файлу должен быть полным. ( /paht/to/Your/site/.htpassword )
2. Для переадресаций указываем протокол: http или ftp (Redirect / http://www.somesite.ru/)
3. По умолчанию файл называется .htaccess.
4. Файл сохраняется в Unix формате. То есть символ новой строки - \n.

Теперь стоит поговорить о некоторых самых популярных параметрах настойки:

Запреты и разрешения

Запрет на все файлы в каталоге:

Код:
deny from all
Доступ только с определенного IP:

Код:
order allow deny

deny from all

allow from $ip
Запретить доступ для определенного ip:

Код:
order allow,deny
allow from all
deny from $ip
Запрет доступа на группу файлов по расширению (по маске):

Код:
<Files "\.(tar|gif|png|...|xml)$">

order allow,deny

deny from all

</Files>
Разрешение или запрет на чтение по расширению.
Запрет на доступ к файлам *.inc:

Код:
<Files "\.(inc)$">

order allow,deny

deny from all

</Files>
Стоит отметить, что запреты файла .htaccess будут действовать только при обращении к нужному документу через браузер пользователя.


Запрет доступа на конкретный файл:

Код:
<Files conf.inc.php>

order allow,deny

deny from all

</Files>
Запрет на чтение conf.inc.php посетителями сайта не запрещает локальным приложениям сервера читать этот файл.

Установка паролей

Паролирование директории:

Код:
AuthName "Reg only"

AuthType Basic

AuthUserFile /pub/home/site/.htpasswd

require valid-user
Такое значение AuthName для посетителей будет выводиться во всплывающем окне. Значение AuthUserFile указывает серверу, где хранится файл с паролями для доступа. такой файл можно создать специальной утилитой htpasswd в операционной системе linux или htpasswd.exe в ОС Windows.


Пароль только на 1 файл:

Пример установки пароля на файл file.rar:

Код:
<Files file.rar>

AuthName "Users zone"

AuthType Basic

AuthUserFile /pub/home/login/.htpasswd

require valid-user

</Files>
Пароль на группу файлов по расширению:

Код:
<Files "\.(gif|png|...|rar)$"> А дальше как пароль на файл

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

Redirect посетителей на другой сайт:
Код:
redirect / http://www.site.ru/
Перенаправление при запросе определенных каталогов и страниц:

Код:
redirect /_vti_bin http://alterwebs.net/

redirect /cpp http://alterwebs.net

redirect /dpp http://alterwebs.net/read/general/list/

RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1
Переопределение стартовой страницы

Код:
DirectoryIndex index.html

Или

Код:
DirectoryIndex index.shtm index.php3 index.php index.htm index.html

Обработка ошибок сервера

код 401 - Требуется авторизация (Authorization Required)
код 403 - Нет доступа (Forbidden)
код 404 - Не найден файл (File not found)
код 500 - Внутренняя ошибка сервера (Internal Server Error)

Код:
ErrorDocument 401 /errors/401.html

ErrorDocument 403 /errors/403.html

ErrorDocument 404 /errors/404.html

ErrorDocument 500 /errors/500.html
Выставить полный запрет на просмотр оглавления необходимой директории. То есть, если в каталоге dir/ нет файла Index.*, что бы он загружался автоматически, то при обращении пользователя к dir/, ему будет отказано в доступе и Apache выдаст ошибку 403.

Код:
Options -Indexes

Кодировка

Иногда необходимо установить кодировку по умолчанию, то есть default-кодировка. В какой кодировке сервер будет отдавать документы.

Код:
AddDefaultCharset windows-1251

А так же установка необходимой кодировки на файлы на сервере:

Код:
CharsetSourceEnc windows-1251