Directiva RewriteCond specifică condițiile pentru o regulă. Înainte de directiva RewriteRule, se află unul sau mai multe directive RewriteCond. Următoarea regulă de conversie este utilizată numai atunci când URI respectă termenii acestei directive și, de asemenea, termenii acestor directive adiționale.
Un șir comparabil care poate conține următoarele construcții suplimentare în plus față de textul simplu:
- RewriteRule link-uri inverse. Acestea sunt feedback-urile din formular
unde NAME_OF_VARIABLE poate fi un șir din următoarea listă:
compus cerere:
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
Aceste variabile corespund complet cu anteturile MIME ale HTTP menționate într-un mod similar. și variabilele serverului Apache sau câmpurile Unix struct tm. Cele mai multe dintre acestea sunt documentate în altă parte în manual sau în specificația CGI. Cei speciali pentru mod_rewrite includ:
IS_SUBREQ Va conține text
Condiția este un șablon de condiție, adică Orice expresie regulată aplicată la instanța curentă a comparatorului. și anume Comparatorul este privit ca să corespundă condiției.
Amintiți-vă: Condiția este o expresie regulată compatibilă cu perl, cu unele adăugiri:
- Puteți prefixa șirul șablon cu un prefix! (semn de exclamare) pentru a indica faptul că modelul nu se potrivește.
- Există câteva opțiuni speciale. În locul șirurilor de expresii regulate regulat, puteți utiliza una dintre următoarele opțiuni:
- <Условие (лексически меньше)
Starea este considerată un șir simplu și este comparată lexic cu String comparabil. Adevărat dacă Comparatorul este mai lexic decât condiția. - > Starea (lexical mai mare)
Starea este considerată un șir simplu și este comparată lexic cu String comparabil. Este adevărat dacă ComparString este mai lexic decât Condition. - = Condiție (lexical egal)
Starea este considerată un șir simplu și este comparată lexic cu String comparabil. Într-adevăr, dacă ComparString este lexical egal cu Condition. și anume aceste două linii sunt exact identice (simbolul din simbol). Dacă condiția are forma "" (două inci succesiv), aceasta compară CompareString cu un șir gol. - -d (este un director)
Metoda CompareString este considerată o cale, existența căii este verificată și faptul că această cale este un director. - -f (este un fișier obișnuit)
CompareString este considerat a fi o cale, existența căii este verificată, deoarece această cale este un fișier obișnuit. - -s (este un fișier obișnuit cu o dimensiune diferită de zero)
Comparatorul este considerat o cale, existența căii este verificată și faptul că această cale este un fișier obișnuit, a cărui mărime este mai mare decât zero. - -l (este un lizim-
Stringul comparabil este considerat o cale, se verifică existența acestei căi și faptul că această cale este o legătură simbolică. - -F (verificarea existenței unui fișier printr-o subcâmplare)
Acesta verifică, prin toate listele de control al accesului ale serverului care există în acest moment, dacă ComparLine este un fișier existent accesibil prin această cale. Acest test utilizează o subcotare internă, deci utilizați această opțiune cu prudență - aceasta afectează în mod negativ performanța serverului! - -U (verificați existența adresei URL printr-o subchetare)
Acesta verifică, prin toate listele de control al accesului ale serverului care există în prezent, dacă ComparLine este o adresă URL existentă. accesibile pe această cale. Acest test utilizează o subcotare internă, deci utilizați această opțiune cu prudență - aceasta afectează în mod negativ performanța serverului!
- <Условие (лексически меньше)
Toate aceste verificări pot fi, de asemenea, precedate de un prefix de exclamare ('!') Pentru a inversa valoarea lor.
În plus, puteți seta steaguri speciale pentru adăugarea condiției
al treilea argument în directiva RewriteCond. Lista de steaguri a următorilor steaguri separate prin virgule:
- nocase | NC (insensibil pentru caractere)
Registrul nu are valoare, adică Nu există nici o diferență între "A-Z" și "a-z", ca în ComparisonString și Condition. Acest steguleț este eficient doar pentru comparațiile dintre Comparator și condiție. Nu funcționează atunci când verificați sistemul de fișiere și subcheile. - ORnext (sau următoarea condiție)
Utilizați pentru a combina condițiile în regulile OR în loc de AND. Un exemplu tipic: fără acest steag, ar trebui să scrieți această condiție / regulă de trei ori.
Pentru a afișa pagina principală a site-ului, în funcție de instalarea User-Agent: antetul solicitării, puteți utiliza următoarele directive:
Interpretare: dacă aveți Netscape Navigator (care este identificat ca "Mozilla"), emiteți cea mai încărcată pagină, cu cadre, etc. Dacă aveți Lynx (un browser de text), veți da pagina cu cea mai mică încărcătură, fără imagini, mese etc. Dacă aveți alt browser, lansați o pagină standard.