Jump to content

[Tutorial rewrite engine] Ce este Rewrite engine si cum se foloseste


iza
 Share

Recommended Posts

Ce este mod_rewrite (Rewrite engine)

Modulul mod_rewrite (Rewrite engine) foloseste un motor de rescriere bazat pe reguli, pentru a rescrie URL-uri solicitate. Cu toate acestea, ea poate fi, de asemenea, utilizat pentru a redirectiona o adresa URL către o alta adresa URL, sau pentru a invoca un proxy intern.

 

mod_rewrite ofera un mod flexibil si puternic pentru a manipula URL-uri folosind un numar nelimitat de reguli. Fiecare regula poate avea un număr nelimitat de conditii atasate, pentru a va permite sa rescrieti URL-ul bazat pe variabile de server, variabile de mediu, antete HTTP, sau stampile de timp.

 

mod_rewrite functioneaza cu ajutorul adresei URL. O regula de rescriere poate fi invocata în httpd.conf sau în .htaccess (de obicei se foloseste .htaccess pentru ca este mai usor de accesat decat httpd.conf, fiind inaccesibil la anumite firme de gazduire). Calea generata de o regula de rescriere poate include un sir de interogare, sau poate duce la sub-procesare interna, redirectionare pentru o cerere externa, sau tranziteaza un proxy intern.

 

Avantaje si dezavantaje

 

Exista mai multe benficii la utilizarea mod_rewrite:

 

  • Adresele URL sunt mai descriptivesi „mai curate”, sunt imbunatatite si transformate in niste adresa URL „prietenoase” si usor de utilizat de catre motoarele de cautare si de catre utilizatori.
  • Poate preveni „inline linking”, astfel economisind latimea de banda (bandwidth).
  • Site-ul poate utiliza in continuare vechile adrese, cat si cele noi create cu ajutorul mod_rewrite fara a aparea vre-o problema.

 

Totusi, pot exista si dezavantaje. De exemplu, in cazul in care utilizatorul doreste sa modifice o adresa URL pentru a prelua date noi, rescrierea adresei URL poate impiedica constituirea de interogari din cauza lipsei de variabile numite. Sa luam exemplu aceasta adresa:

http://www.exemplu.ro/Blog/06/04/02/

In acest caz, sirul de interogare original este mult mai util deoarece deoarece variabilele de interogare indica ziua, luna si anul:

http://www.exemplu.ro/Blog/Posts.php?anul=2006&luna=04&ziua=02

Dar, din fericire, exista totusi o alta metoda de a elimina aceasta problema foarte usor, transformand adresa in o adresa de genul:

http://www.exemplu.ro/Blog/ziua-29/luna-10/an-2055/

Totusi, prima varianta este mult mai prietenoasa decat aceasta.

Exemplu de utilizare

 

Cum putem sa generam o adresa ca de exemplu 

http://www.main.ex.ro/test/data-e5b942a9860bc039db9b31336-test/

cu mai mult de o variabila sau 

http://www.main.test1.ro/testt/test1

cu un singur termen? Foarte simplu, in fisierul nostru .htaccess vom adauga un cod asemanator cu urmatoarele:

RewriteRule ^radio-([^/]+)$ dedicatii.php?radio_ident=$1 pentru un al 2-lea exemplu (1 termen) sau RewriteRule ^data-([^/]+)-([^/]+)-([^/]+)-([^/]+)/$ data.php?radio_ident=$1&utilizator=$2&md5_pass=$3&cerere=$4

Este posibil de asemenea sa trebuiasca ca sus de tot, la inceputul fisierului Dvs. .htaccess sa trebuiasca sa adaugati urmatoarele coduri in caz ca aveti o versiune mia veche de apache si nu merge rescrierea adreselor URL din prima:

RewriteEngine On
RewriteBase /

Acum, revenind la treburile noastre, cum generam o adresa modificata? Totul este foarte simplu, daca nu ati inteles din exemplele de mai sus, va voi explica cum se foloseste mai exact mod_rewrite.

Aceastea sunt niste exeple de coduri ce trebuiesc puse in fisierul Dvs. .htaccess:

 

  • RewriteRule ^galerie/$ index.php?pagina=galerie  – aceasta este o simpla rescriere a adresei URL care inlocuieste http://exemplu.ro/index.php?pagina=galerie cu http://exemplu.ro/galerie/.

 

  • RewriteRule ^galerie/p-([^/]+)$ index.php?pagina=galerie&pagina=$1  – Acest cod este o rescriere a adresei URL folosita, in cazul de fata, pentru a rescrie o adresa care are in ea o variabila care poate fi alease de utilizator, adica o variabila care nu este stabilita de utilizator.  ([^/]+) seminifica faptul ca utilizatorul poate introduce orice acolo, respectiv, in cazul nostru numarul pagini pe care doreste sa o acceseze. Astfel, transformam http://exemplu.ro/index.php?pagina=galerie&pagina=29 in http://exemplu.ro/galerie/p-29/.

 

  • RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ index.php?pagina=$1&variabila2=$2&variabila3=$3&variabila4=$4&variabila5=$5&variabila6=$6&variabila7=$7&variabila8=$8&variabila9=$9  – Acest cod, dupa cum ati observat deja, este un exemplu de cod, in care avem peste 1 variabila in adresa, respectiv 9. Acum cred ca deja ati inteles cum se mananca mod_rewrite. Dupa cum vedeti, putem adauga cate variabile si reguli dorim in adresa URL atata timp cat nu facem un „carnat” de adresa si zapacim utilizatori  . Tot ceea ce este important este sa tinem cont de numarul de ordine al  ([^/]+), astfel, daca  ([^/]+) este primul, in adresa rescrisa va fi ceva de genul ?pagina=$1, iar daca este ultimul va fi ceva de genul (in cazul in care ultimul este 9, ca in cazul nostru) &pagina=$9.

 

Citeste mai mult pe Wikipedia sau pe site-ul apache.

Edited by iza
Link to comment
Share on other sites

  • Tupi locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.