Директива RewriteCond визначає умови для будь-якого правила. Перед директивою RewriteRule розташовуються одна або кілька директив RewriteCond. Наступне за ними правило перетворення використовується тільки тоді, коли URI відповідає умовам цієї директиви і навіть умовам цих дополітельних директив.
СравніваемаяСтрока рядок яка може містити такі додаткові конструкції вдополеніі до простого тексту:
- RewriteRule обратние_связі. Це зворотні зв'язки виду
де NAME_OF_VARIABLE може бути рядком взятої з наступного списку:
з'єднання запит:
HTTP _USER_AGENT
HTTP _REFERER
HTTP _COOKIE
HTTP _FORWARDED
HTTP _HOST
HTTP _PROXY_CONNECTION
HTTP _ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API _VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
Ці змінні повністю відповідають названим схожим чином MIME-заголовкам HTTP. і змінним сервера Apache або полях struct tm систем Unix. Більшість з них документрованни в інших місцях керівництва або в специфікації CGI. Ті, що є для mod_rewrite спеціальними включають:
IS_SUBREQ Буде містити текст
Умова це шаблон умови, тобто якесь регулярний вираз застосовується до поточного екземпляру СравніваемаяСтрока. тобто СравніваемаяСтрока проглядається на пошук відповідності Умова.
Пам'ятайте: Умова це perl сумісний регулярний вираз з деякими доповненнями:
- Ви можете випереджати рядок шаблону префіксом! (Знак оклику) для вказівки невідповідності шаблоном.
- Є деякі спеціальні варіанти Умова. Замість звичайних рядків з регулярними виразами можна також використовувати один з наступних варіантів:
- <Условие (лексически меньше)
Умова вважається простий рядком і лексично порівнюється з СравніваемаяСтрока. Істинно якщо СравніваемаяСтрока лексично менше ніж Умова. - > Умова (лексично більше)
Умова вважається простий рядком і лексично порівнюється з СравніваемаяСтрока. Істинно якщо СравніваемаяСтрока лексично більше ніж Умова. - = Умова (лексично одно)
Умова вважається простий рядком і лексично порівнюється з СравніваемаяСтрока. Істинно якщо СравніваемаяСтрока лексично одно Умова. тобто ці два рядки повністю однакові (символ всімвол). Якщо Умова має вигляд "" (два знака дюйма йдуть підряд) це порівнює СравніваемаяСтрока з нового рядка. - -d (чи є каталогом)
СравніваемаяСтрока вважається шляхом, перевіряється існування цього шляху і то що цей шлях є каталогом. - -f (чи є звичайним файлом)
СравніваемаяСтрока вважається шляхом, перевіряється існування цього шляху іточто цей шлях є звичайним файлом. - -s (є ліобичним файлом з ненульовим розміром)
СравніваемаяСтрока вважається шляхом, перевіряється існування цього шляху і то що цей шлях є звичайним файлом, розмір якого більше нуля. - -l (є лісімволіческой посиланням)
СравніваемаяСтрока вважається шляхом, перевіряється існування цього шляху і то що цей шлях є символічною посиланням. - -F (перевірка існування файлу через підзапит)
Перевіряє через все списки контролю доступу сервера, існуючі на даний момент, є чи СравніваемаяСтрока існуючим файлом, доступним цим шляхом. Для цієї перевірки використовується внутрішній підзапит, тому використовуйте цю опцію з обережністю - це негативно позначається напроізводітельності сервера! - -U (перевірка існування URL через підзапит)
Перевіряє через все списки контролю доступу сервера, існуючі на даний момент, є чи СравніваемаяСтрока існуючим URL. доступним цим шляхом. Для цієї перевірки використовується внутрішній підзапит, тому використовуйте цю опцію з обережністю - це негативно позначається напроізводітельності сервера!
- <Условие (лексически меньше)
Всі ці перевірки також можуть бути наперед префіксом знак оклику ( '!') Для інвертування їх значення.
Додатково ви можете встановлювати спеціальні прапори для Умова додаючи
третім аргументом в директиву RewriteCond. Flags список наступних прапорів розділених комами:
- nocase | NC (регістронезавісімого)
Регістр не має значення, тобто немає відмінностей між 'A-Z' і'a-z 'як в доповненні СравніваемаяСтрока так і Умова. Цей прапор ефективний тільки для порівнянь між СравніваемаяСтрока і Умова. Він не працює під час перевірок в файлової системі і в підзапитах. - ornext | OR (або така умова)
Використовуйте для комбінування умов в правилах OR замість AND. Типовий приклад: Без цього прапора ви повинні були б написати цю умову / правило три рази.
Для видачі головної сторінки сайту в залежності від установки User-Agent: заголовка запиту, ви можете використовувати такі директиви:
Інтерпретація: Якщо у вас Netscape Navigator (який ідентифікується як 'Mozilla'), ви видаєте максимально наворочену сторінку, з фреймами, і т.д. Якщо у вас Lynx (текстовий браузер), ви видаєте найменш навороченную сторінку, без малюнків, таблиць і т.д. Якщо будь-який інший браузер, видаєте стандартну сторінку.