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

Файл .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 - IP адрес.

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

order allow deny
    deny 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
телеграм канал. Подпишись, будет полезно!

Комментарии (6)

Василий Федеорович 2017-10-20 00:46:58
по моему. тут написан бред:

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

order allow deny
deny from all
deny from $ip
Александр 2013-01-13 17:50:07
Здравствуйте! Помогите разобраться.

Ситуэйшен такой - сейчас при запросе главной страницы: http://www.сайт.ru идет перенаправление на внутреннюю: http://www.сайт.ru/главная/. Я думаю это неправильно, по сути главной не существует, нужно настроить обратно редирект с http://www.сайт.ru/главная/ на http://www.сайт.ru страницу.

Также нужно настроить редирект с домена http://www.сайт.ru на домен http://сайт.ru

На серче подсказали найти в корне .htaccess и вписать:

RewriteEngine On
# ---------- www.example.com на example.com ---------- #
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
и наоборот:

RewriteEngine On
# ---------- example.com на www.example.com ---------- #
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Дело в том я нашел в корне сайта 2 файла:

httpdocsdatasnapshots.htaccess
httpdocsсайт.rudatasnapshots.htaccess

открыл, и они оба пишут "deny from all" . Поюзал по яши везде пишут что это запрет для всех на доступ к ресурсу. Что посоветуете ?
sigor 2012-05-23 11:34:28
Alex, алсо, не катит такой запрет

<Files ".(tar|gif|png|...|xml)$">
order allow,deny
deny from all
</Files>
Вроде бы так:

<FilesMatch .(tar|gif|png|...|xml)$>
Order Deny,Allow
Deny from all
</FilesMatch>
sigor 2012-05-23 11:33:57
Ошибочка тутка на страничке:

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

order allow deny
    deny from all
    deny from $ip
Так заблочишь доступ ко всему сайту (ну после того как выправишь ошибку с Internal Server Error ... запятой то нету) )))

Так будет гуд:

Order allow,deny
Allow from all
Deny from $ip
Ошибочка тутка тоже:

Redirect посетителей на другой сайт:
    Redirect / http://www.site.ru
Вроде вот так бы надо:

Redirect / http://www.site.ru/
слэш то при редиректе не будет прописываться ))))

Удачи Alex...
zloi 2012-02-20 07:44:10
<Files ".(inc)$">
order allow,deny
deny from all
</Files>
Чтоб я еще раз поверил на слово...
}[0t 2010-03-26 09:46:18
Незнаю как у вас все это работало (я имею ввиду про групповой доступ), но у меня не работало когда пишу <Files t.tpl> ... </Files> доступ к этому файлу закрыт а когда пишу <Files ".(tpl)$"> ... </Files> не чего не работает... Хорошо что в документации по апач был пример так там написано так <Files ~ ".(tpl)$"> ... </Files> одним словом поставил тильду и все работает)))....
Меню