Возможности .htaccess: кодировка и права доступа

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

Кодировка отдаваемого документа

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

AddDefaultCharset utf-8

Вышеописанная директива, как видно из строки utf-8, отдаёт посетителю документ именно в этой кодировке. При желании можно указать свой вариант. Это удобно тем, что требуется всего лишь внести 1 строчку в файл .htaccess без предварительной конвертации всего документа, например, средствами Notepad++.

Кодировка загружаемого документа

Чтобы изменить кодировку всех загружаемых документов и файлов на utf-8, нам необходимо внести в файл .htaccess директиву «CharsetSourceEnc» следующего содержания:

CharsetSourceEnc uft-8

Для конкретизации типа надо выставить маску (расширение) файла. В данном случае мы будем изменять кодировку на utf-8 для всех документов с маской «php». Любая страница, заканчивающаяся в конце на расширение «php» будет преобразовываться в кодировку utf-8. Можно так же указать другие макси через пробел.

AddCharset utf-8 .php

Права доступа

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

Deny from all

Далее запретим доступ к выбранным файлам. В данном случае под запретом файл «admin.php»

<Files admin.php>
Deny from all
</Files>

Теперь запретим все файлы, имеющие определённое расширение (маску). В нижнем примере мы запретим для доступа все файлы, которые имеют тип «log». Так, при попытке открыть файл logfile.log мы получим сообщение о запрете прав на чтение данного файла. Символ «звёздочка» перед расширением говорит серверу, что до окончания расширения могут быть любые символы, кроме слэша.

<Files *.log>
Deny from all
</Files>

Как и в других примерах можно создавать групповые правила, используя регулярные выражения. Например, последовательность (exe|gif|log) позволить указать серверу на несколько расширений, ограничиваясь всего одним правилом.

19.10.2013