|
Описание: |
Устанавливает кое-какие специальные опции для механизма преобразований |
|---|---|
|
Синтаксис: |
RewriteOptions Options |
|
Значение по умолчанию: |
None |
|
Контекст: |
server configvirtual hostdirectory.htaccess |
|
Разрешение: |
FileInfo |
|
Статус: |
Расширение |
|
Модуль: |
mod_rewrite |
Директива RewriteOptions устанавливает некоторые специальные опции для текущей конфигурации в контексте сервера или каталога. Строки Option могут иметь следующий вид:
|
Описание: |
Определяет правила для механизма преобразований |
|---|---|
|
Синтаксис: |
RewriteRule ШаблонПодстановка |
|
Значение по умолчанию: |
None |
|
Контекст: |
server configvirtual hostdirectory.htaccess |
|
Разрешение: |
FileInfo |
|
Статус: |
Расширение |
|
Модуль: |
mod_rewrite |
|
Совместимость: |
Флаг cookie доступен в Apache 2.0.40 и более поздних. |
Директива RewriteRule и есть настоящая рабочая лошадка преобразований. Эта директива может встречаться более одного раза. Каждая директива, в этом случае, определяет одно правило преобразования. Порядок определений этих правил важен, потому что этот порядок используется при обработке правил во время работы.
Шаблон это perl совместимое регулярное выражение которое применяется к текущему URL. Здесь под «текущим» подразумевается значение URL когда применяется это правило. Этот URL не обязательно совпадает с первоначально запрошенным URL, потому что любое количество правил возможно уже были применены к нему и соответственно преобразовали его.
Некоторые указания по синтаксису регулярных выражений:
Текст:
. Любой одиночный символ
[chars] Класс симвлолв: Один из символов
[^chars] Класс симвлолв: Ни один из символов
text1|text2 Альтернатива: text1 или text2
Кванторы (символы для обозначения количественных отношений):
? 0 или 1 из предшествующего текста
* 0 или N из предшествующего текста (N > 0)
+ 1 или N из предшествующего текста (N > 1)
Группировка:
(text) Группировка текста
(либо установка границ альтернативы или
для создания обратных связей где N группа, которая
может быть использована в RHS директивы RewriteRule с $N)
Маркеры:
^ Маркер начала строки
$ Маркер конца строки
Экранирование:
char экранирование конкретного символа
(к примеру для указания символов ".[]()" и т.д.)
Более подробную информацию о регулярных выражениях, смотрите в документации по регулярным выражениям Perl ("perldoc perlre"). Если вы заинтересованы в ещё более детальной информации о регулярных выражениях и их диалектах (POSIX и т.д.), смотрите следующую, специально написанную по этой теме книгу:
Mastering Regular Expressions
Jeffrey E.F. Friedl
Nutshell
Handbook Series
O'Reilly & Associates, Inc. 1997
ISBN
1-56592-257-3
Кроме того, в mod_rewrite символ отрицания (NOT) ('!') — допускаемый префикс в шаблоне. Это даёт вам возможность инвертировать действие шаблона; ну к примеру скажем: "если текущий URLне совпадает с этим шаблоном". Это может быть использовано в особых случаях, когда проще найти шаблон для несоответствия, или в качестве последнего правила, работающего по умолчанию.
Подстановка в правиле преобразования это строка будет подставляться (или будет заменять) вместо оригинального URL, для которого естьсовпадение Шаблону. Кроме простого текста вы можете использовать
Обратные связи это $N (N=0..9) идентификаторы которые заменяются содержимым N-й группы подходящего Шаблона. Переменные сервера Это тоже самое что и СравниваемаяСтрока директивы RewriteCond. Запросы к массиву пришли из директивы RewriteMap там они и объяснены. Эти три типа переменных рассматриваются в порядке, в котором они идут в вышеприведенном списке.
Как уже было упомянуто выше, все правила преобразований применяются с использованием Подстановки (в порядке, в котором они определены в конфигурационном файле). URL полностью заменяется Подстановкой и процесс преобразования идет до тех пор, пока не останется больше никаких правил, если только он не прерван специально, с помощью флага L — см. ниже.
Существует специальная строка подстановки вида '-' которая означает: НЕТ подстановки! Звучит глупо? Нет, это полезно для правил преобразования которые только проверяют некоторые URL однако не производят подстановок, т.е., в связке с флагом C (цепочка) возможно иметь более чем один шаблон, применяемый перед проведением непосредственно самой подстановки.
Ещё одно замечание: Вы даже можете создавать URL, содержащие строку запроса, в строке подстановки. Просто используйте вопросительный знак внутри строки подстановки для указания того, следующее за ним содержимое должно быть преобразовано в QUERY_STRING (строку запроса). Когда вы хотите убрать существующую строку запроса, завершайте строку подстановки просто вопросительным знаком.
Комментарии
Комментариев пока нет.