Директива Order определяет порядок применения директив Allow (разре- шить) и Deny (запретить). Например, с помощью этих директив можно раз- решить доступ к папке только лицам, пришедшим с определенного IP-адреса или определенного домена.
Order deny, allow Deny from all
Allow from 192.168.0.1
Значение all указывает на все адреса. В качестве значений адреса можно указать неполный IP-адрес или неполное имя домена.
Для полного доступа к папке можно использовать следующий код:
Order allow, deny Allow from all
Если определено несколько критериев доступа к папке, то директива Satisfy задает, должны ли быть выполнены все условия (значение all) или хотя бы одно из условий (значение any).
AuthType Basic
AuthName "restricted area"
AuthUserFile "C:/Apache2/data/pass.conf"
require valid-user
Deny from all Allow from 127.0. Satisfy any
В этом примере, если клиент пришел с локального хоста, то он получит дос- туп к папке без пароля, а остальным будет выведено окно с запросом пароля.
Регулярные выражения, используемые в директивах
Некоторые директивы позволяют использовать регулярные выражения. Эти выражения мало чем отличаются от регулярных выражений, используемых в JavaScript (см. разд. 3.15.10). В них можно использовать следующие мета- символы и специальные конструкции:
^ — привязка к началу строки;
$ — привязка к концу строки;
[] — позволяет указать символы, которые могут встречаться на этом месте в строке. Можно перечислять символы подряд или указать диапа- зон через тире;
[^] — значение можно инвертировать, если после первой скобки указать символ ^. Таким образом можно указать символы, которых не должно быть на этом месте в строке.
Для использования специальных символов как обычных необходимо пе- ред специальным символом указать символ "\";
\d — любая цифра;
\w — любая латинская буква, цифра или знак подчеркивания;
\s — любой непечатный символ (пробел, табуляция, перевод страницы, новая строка или перевод каретки);
. (точка) — любой символ, кроме символа перевода строки (\n);
\< и \> — пустая строка перед указанным шаблоном и после него;
{n} — в точности n вхождений предыдущего символа или подвыражения в строку;
{n,} — n или более вхождений символа в строку;
{n,m} — не менее n вхождений символа в строку и не более m. Цифры указываются через запятую без пробела;
* — ноль или большее число вхождений символа в строку;
+ — один или большее число вхождений символа в строку;
? — ноль или одно число вхождений символа в строку;
n|m — один из символов n или m.
Регулярное выражение можно разбить на подвыражения с помощью круглых скобок. Каждая группа символов, соответствующих подвыражению, сохра- няется в памяти. В дальнейшем группу символов можно извлечь, указав по- сле символа $ номер скобки:
AliasMatch ^/manual(?:/(?:de|en|es|fr|ru))?(/.*)?$ "C:/Apache2/manual$1"