Директива rewritecond файлу

Директива RewriteCond визначає умови для будь-якого правила. Перед директивою RewriteRule розташовуються одна або кілька директив RewriteCond. Наступне за ними правило перетворення використовується тільки тоді, коли URI відповідає умовам цієї директиви і навіть умовам цих дополітельних директив.

СравніваемаяСтрока рядок яка може містити такі додаткові конструкції вдополеніі до простого тексту:

  • RewriteRule обратние_связі. Це зворотні зв'язки виду
(0 <= N<= 9) предоставляющие доступ к сгруппированным частям (в круглых скобках!) шаблона из соответствующей директивы RewriteRule (единственной, следующей сразу затекущим набором директив RewriteCond ).
  • RewriteCond обратние_связі. Це зворотні зв'язки виду (1 <= N<= 9) предоставляющие доступ ксгруппированным частям (в круглых скобках!) шаблона из соответствующей директивы RewriteCond втекущем наборе условий.
  • RewriteMap розширення. Це розширення виду Дивіться документацію по RewriteMap для отримання більш докладної інформації.
  • Змінні сервера. Це змінні виду

    де 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 сумісний регулярний вираз з деякими доповненнями:

    1. Ви можете випереджати рядок шаблону префіксом! (Знак оклику) для вказівки невідповідності шаблоном.
    2. Є деякі спеціальні варіанти Умова. Замість звичайних рядків з регулярними виразами можна також використовувати один з наступних варіантів:
      • <Условие (лексически меньше)
        Умова вважається простий рядком і лексично порівнюється з СравніваемаяСтрока. Істинно якщо СравніваемаяСтрока лексично менше ніж Умова.
      • > Умова (лексично більше)
        Умова вважається простий рядком і лексично порівнюється з СравніваемаяСтрока. Істинно якщо СравніваемаяСтрока лексично більше ніж Умова.
      • = Умова (лексично одно)
        Умова вважається простий рядком і лексично порівнюється з СравніваемаяСтрока. Істинно якщо СравніваемаяСтрока лексично одно Умова. тобто ці два рядки повністю однакові (символ всімвол). Якщо Умова має вигляд "" (два знака дюйма йдуть підряд) це порівнює СравніваемаяСтрока з нового рядка.
      • -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 (текстовий браузер), ви видаєте найменш навороченную сторінку, без малюнків, таблиць і т.д. Якщо будь-який інший браузер, видаєте стандартну сторінку.

    Схожі статті