Howto mod_rewrite part 1

De multe ori ne-am lovit de mod_rewrite. Este un modul care are foarte multe optiuni si cu care se pot realiza foarte multe lucruri interesante. Dar multe optiuni inseamna grad mare de complexiate. Iar daca regulile nu sint scrie bine atunci in loc sa ajute mai mult incurca. Care sint optiunile uzuale si cum se folosesc ? Sa vedem …

.

  • . orice caracter se potriveste
  • a.b se potrivesc orice expresii de genul : axb , acb , a@b
  • de semenea se potrivesc si expresii de genul alba , arbaleta

+

  • + inseamna ceva care apare o data sau de mai multe ori
  • “o+” se potrivesc orice expresii de genul: o, oo, oooo, gooooooooooooooooool , ooooooofffffffff
  • ceea ce se repeta nu este necesar sa fie un singur caracter

*

  • * inseamna ca predecesorul se potriveste de zero sau mai multe ori
  • difera de + prin faptul ca poate sa nu apara . diferenta e subtila si deseori este loc de generare de erori
  • regula of*ice de exemplu accepta ofice si office dar accepta si oice

?

  • ? inseamna ca item-ul precedent este optional
  • colou?r este o regula care accepta atit color cit si colour

^

  • ^ = start anchor. Este ancora de start a unui sir
  • regula impune ca stringul de prelucrat sa inceapa cu un anumit tipar
  • ^Dam accepta Dambovita dar nu accepta ADMIN

$

  • $ = end anchor. Este ancora de sfirsit a unui sir
  • regula impune ca stringul de prelucrat sa se termine cu un anumit tipar
  • ci$ accepta pisici dar nu si pisicii

( )

  • permite gruparea unor caractere in itemuri
  • astfel se pot aplica + , * si ? pentru a stringe grupui mari de caractere
  • (ab)+ accepta abababababab
  • un efect secundar al () este ca atunci cind un grup de caractere din string este gasit , acet grup este stocat si poate fi utilizat mai tirziu. Valoarea stringului gasit este stocat intr-o variabila ce se numeste backreference . Prima astfel variabila poate fi chemata prin $1 sau %1 functie de context, a doua variabila prin $2 sau %2 samd

[ ]

  • [ ] defineste o clasa de caractere
  • [abc] inseama a sau b sau c
  • c[uoa]t accepta cut , cot , cat , cote , catena dar nu accepta coat

! – NOT

  • ! – neaga o regula
  • intr-o clasa ! neaga caracterele din clasa repectiva
  • [!ab] – inseamna orice caracter cu exceptia lui a sau b

Cam acesta este aflabetul mod_rewrite. Cum se folosesc si cum combina alfabetul de mai sus pentru a obtine lucruri utile pentru site-urile de web ? Detalii si exemple in partea a doua.

Daca doriti sa va jucati cu mod_rewrite atunci urmatoarele linii de configurare apache se vor dovedi extrem de utile ( va permit debugging-ul de reguli mod_rewrite) :

RewriteLog /var/log/apache2/rewrite.log

RewriteLogLevel 9

3 thoughts on “Howto mod_rewrite part 1

  1. Salut.
    Ai o greseala cred. Ai scris la “$” ca este ancora de start a unui sir. Cred ca vroiai sa spui ca este ancora de final a unui sir.

Comments are closed.