Файл настройки доступа к серверу .htaccess

Сайтостроение

Файл настройки доступа к серверу .htaccess

Автор: Максим Приходько
Опубликовано 30 ноября 2005 года

Так как среди серверных систем наиболее популярна операционная система Unix, то и самый распространенный сервер не MS IIS, а Apache (версия которого, правда, существует и для Windows).

Когда в строке браузера вводится имя вашего сайта, именно сервер решает, какие файлы показывать и как. А управлять работой сервера в отношении веб-сайта можно манипулируяфайлом настройки .htaccess, любое изменение которого незамедлительно вступает в силу.

Синтаксис .htaccess имеет жесткую структуру, несоблюдение которого приводит к ошибкам сервера, поэтому необходимо выполнять следующие два требования:

  1. Пути к файлам (директориям) указываются от корня сервера. Например: /opt/home/www.mysite.ru/htdocs/config/.htpasswords
  2. Домены указываются с указанием протокола. Например: Redirect / http://www.site.ru

Файл должен называться именно "точка" htaccess и быть записан в UNIX-формате. В FAR, например, при редактировании можно нажать Shift+F2 и выбрать пункт меню "Сохранить как UNIX-текст".

Приведем простые примеры управления доступа к сайту с использованием файла .htaccess:

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

deny fromall

Здесь all обозначает "все".

Разрешить доступ с определенного IP-адреса (например, 192.13.237.14):

order allow deny
deny from all
allow from 192.13.237.14

Запретить доступ с определенного IP-адреса (например, 192.13.237.14):

order allow deny
allow from all
deny from 192.13.237.14

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

<Files "\.(inc|sql|другиерасширения)$">
order allow,deny
deny from all
</Files>

В данном примере сам веб-сервер "Апач" может обращаться к файлам с указанными расширениями.

Можно установить запрет на конкретный файл по его полному названию (например, config.inc.php):

<Files config.inc.php>
order allow,deny
deny from all
</Files>

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

AuthName "Private zone"
AuthType Basic
AuthUserFile /pub/home/
логин/.htpasswd
require valid-user
</Files>

Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFileуказывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

Например в директории, которую защищаем паролем создаем .htaccess со следующим содержанием:

AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/home/yoursite.ru/.htpasswd
require valid-user
</Files>

В этом примере посетитель при запросе директории будет видеть фразу "ForRegistered Users Only", файл с паролями для доступа должен лежать в директории /pub/yoursite.ru/ и называться .htapasswd . Директория указывается от корня сервера. Если вы неправильно укажете директорию, то Apacheне сможет прочитать файл .htpasswd и никто не получит доступа к данной директории.

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

<Files private.zip>
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/
логин/.htpasswd
</Files>

Аналогично, используя команду <Files "\.(inc|sql|другие расширения)$">, можно указывать пароли по маске файлов. Например, для установки пароля на доступ ко всем файла с расширением .sql необходимо указать следующую информацию:

<Files "\.(sql)$">
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/yoursite.ru/.htpasswd
</Files>

Для того чтобы сделать перенаправления посетителя на сайт http://www.site.ru, в .htaccess необходимо указать:

Redirect / http://www.site.ru

Продолжение следует...