
- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Переадресация
Директивы Alias и Redirect позволяют переадресовывать запросы как в пределах файловой системы вашего компьютера, так и по всей Web. И хотя в идеальном мире такая необходимость не должна возникать никогда, на практике часто бывает полезно иметь возможность перемещать HTML-файлы по серверу и даже на другой сервер без необходимости изменения всех ссылок в HTML-сценарии. Более правильное использование — по крайней мере директивы Alias — заключается в рационализации каталогов, разбросанных по всей системе. Например, различные каталоги могут обслуживаться различными пользователями и, возможно, даже находиться на смонтированных удаленных файловых системах. Но с помощью директивы Alias можно сделать так, что будет казаться, будто они сгруппированы более логично.
Директива ScriptAlias уже рассматривалась в разделе "Общий шлюзовый интерфейс (CGI)". Она обеспечивает возможность хранить сценарии в безопасности, подальше от любопытных глаз, и, кроме того, автоматически отмечает каталог, где они хранятся, как содержащий CGI-сценарии. См. также директивы AddHandler и SetHandler
ScriptAlias <иг1-путь каталог_или_имя_файла>
Следующая директива - Alias - обеспечивает возможность хранить документы не в каталоге DocumentRoot, а где-нибудь в другом месте в файловой системе.
Alias <url -путь каталог_иия-файла>
Директива Redirect преобразует URL в новый URL. Например,
< VirtualHost sales, my host. corn >
ServerAdmin sales_mgr@myhost.corn
Redirect /secrets http://www.myhost.com
DocumentRoot /usr/www/site. alias/htdocs/salesmen
</VirtualHost>
Если директива Redirect находится в секции <VirtualHost>, точное местоположение этой директивы не имеет значения. Если теперь обратиться по адресу http://sales.myhost.corn/secrets, мы попадем на индекс клиентов узла http://www.myhost.com/.
Важное различие между директивами Alias и Redirect заключается в том, что при использовании Redirect браузер знает о новом местоположении, а при использовании Alias — нет, и это новое местоположение будет использоваться как базис для относительных ссылок в затребованном НТМL-документе.
Однако все функции этих директив и даже больше может выполнить новая директива Rewrite.
Директива Rewrite действует так: она берет шаблон для перезаписи и сравнивает его с URL. Если URL соответствует шаблону, к нему применяется подстановка перезаписи. Шаблоны представляют собой регулярные выражения UNIX, в своей простейшей форме знакомые всем как mod.*\ .с, что соответствует любому имени файла модуля. Назначение регулярных выражений заключается в том, что для обозначения частей входящих URL можно применять ряд специальных символов. Подстановки могут включать в себя функции сопоставления, которые извлекают части входящего URL и ищут соответствия для них в базах данных или даже вызывают для обработки URL специальные программы. Правила можно применять к обрабатываемому URL повторно и рекурсивно. Функциональные возможности модуля mod_rewrile.c очень обширны. Данный модуль может применяться в четырех ситуациях:
• администратором в Config-файле сервера для применения во всех контекстах. Правила применяются ко всем URL главного сервера и ко всем URL виртуальных серверов;
• администратором внутри блоков VirtualHost. Правила применяются только к URL виртуального сервера;
• администратором внутри блоков Directory. Правила применимы только к указанному каталогу;
• пользователями в своих файлах .htaccess. Правила применимы только к указанному каталогу. Директивы этого модуля выглядят достаточно просто.
RewriteEngine <оп or off>
Эта директива задает или отменяет использование перезаписи. Если указано значение off (выключено), перезапись не осуществляется. Вместо того чтобы закомментировать строки RewriteRule, для отключения действия этой функции лучше использовать данную директиву.
RewriteLog <имя_файла>
Эта директива помещает данные регистрации в файл с указанным именем. Если имя не начинается с символа /, то оно приведено относительно корневого каталога сервера. Данная директива должна указываться в Config-файле только один раз.
RewriteLogLevel <значение(по умолчанию: 0)>
Данная директива управляет степенью детализации регистрации: значение О означает отсутствие регистрации, а 9 — регистрацию почти каждого действия.
RewriteMap <имя_соответствия (txt, dbm, prg): имя файла>
Этой директивой задается внешний файл соответствия, при помощи которого определяются строки подстановки путем поиска по ключам. Модуль передает запрос на поиск определенного соответствия в следующей форме:
-
< $(имя соответствия : Lookupkey \ DefaultValue)
Если значение Lookupkey не найдено, возвращается значение по умолчанию DefaultValue. Тип файла соответствия должен быть указан следующим аргументом:
txt — неформатированный текст
Это текстовый файл с пустыми строками, комментариями, начинающимися с символа #, и полезньми строками в формате:
Matching Key SubstituteValue
dbm — формат хеш-файла DBM
Двоичный файл NDBM ("новый" интерфейс dbm, которому уже 15 лет, также используется для проверки полномочий в dbm), содержащий те же данные, что и файл с неформатированным текстом. Он создается любым инструментальным средством ndbm или с помощью Peri-сценария dbmmanoge из служебного каталога дистрибутива Apache.
prg — формат программы
Исполняемый файл UNIX (скомпилированная программа или сценарий CGI), запускаемый Apache. При каждом поиске эта программа получает через stdin ключ в виде строки, оканчивающейся символом перевода строки, и возвращает через stdout найденное подстановочное значение или null, если поиск дал отрицательный результат.
RewriteBase <Базовый_URL>
Эта директива явно устанавливает базовый URL для перезаписи по каталогам. Если в файле .htaccess используется директива RewriteRuie, ей передается URL с отброшенным именем локального каталога, поэтому правила применяются только к оставшейся части. После завершения подстановки RewriteBase добавляет необходимый префикс.
RewriteCond <тестовая_строка условный_шаблон>
Директиве RewriteRuie могут предшествовать одна или более директив RewriteCond, определяющих условия, при которых ее следует применять. Условный_шаблон — это регулярное выражение, которое сравнивается со значением, выбранным из тестовой_строки, где содержатся переменные сервера в виде %(NAME_OF_VARIABLE}. NAME_OF_VARIABLE может быть одной из переменных, соответствующих аналогично именованным МIМЕ-заголовкам HTTP, С-переменным сервера Apache или полям системы Unix (например, HTTP_USER_AGENT, HTTP_HOST и т.д.). Если для регулярного выражения не найдено совпадения, то директива RewriteRule, которая описана ниже, не применяется.
RewriteRuie <Шаблон Замена [флаги]>
Эту директиву можно использовать столько раз, сколько необходимо. Каждая директива применяет правило к результатам действия предшествующей директивы, поэтому порядок их следования является существенным. Шаблон сопоставляется с входящим URL; в случае успеха происходит замена. Также может быть указан необязательный аргумент — флаги. Вместо перечисленных ниже флагов можно указывать одно-двухбуквенные сокращения:
redirect \ R
Принудительная переадресация.
proxy IP
Принудительное использование proxy-сервера.
Last\L
Перейти в начало правила с текущим URL.
chain \ С
Применить следующее правило цепочки, если оно подходит.
type \T=mime-mun
Принудительно назначить целевому файлу указанный mime-тип.
nosubreq \ NS
Пропустить правило, если это внутренний подзапрос.
passthrough \ РТ
Передать следующему обработчику.
skip \ S= число
Пропустить следующие число правил.