Evaluare utilizator: 0 / 5

Steluță inactivăSteluță inactivăSteluță inactivăSteluță inactivăSteluță inactivă
 

A trecut vremea când legăturile se terminau în .html, sau .php sau erau ceva de genul www.situlmeu.ro/produs.php?id=14&catelog=fructe&raion=detergent. Astăzi de la URL-uri ne aşteptăm să fie prietenoase, „citibile”, uşor de comunicat şi la nevoie de memorat. Toate CMS-urile care se respectă oferă linkuri frumoase. Dar dacă ne facem noi aplicaţia? Atunci trebuie să rezolvăm noi problemele. O cale este să pasăm totul lui index.php (cum face WordPress de exemplu), dar de dragul exemplelor didactice nu vom face aşa. Să vedem deci nişte cazuri. Avem situl cu index.php făcând mai totul, dar să zicem că avem un login.php pentru identificare şi logout.php pentru ieşire.

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^identificare/$ /login.php [NC,L]

Primele linii nu le vom mai repeta, şi luaţi-le ca fiind de musai în deschidere :). Linia a 3-a face ca cine scrie www.situlmeu.ro/identificare/ să apeleze de fapt www.situlmeu.ro/login.php dar fără să se vadă aceasta (nu este deci redirectare, ci un fel de mascare). Deduceţi cum ar trebui făcut pentru logout.php. Acum să vedem un exemplu ceva mai complex. Să zicem că aveţi pagina index.php care are un parametru pentru produse (pentru codul lor). Atunci va fi www.situlmeu.ro/index.php?produs=154. Poate arăta mai frumos, adică de-a dreptul www.situlmeu.ro/154/ cu următoarea linie în .htaccess (primele două de mai sus aţi reţinut că trebuie mereu):

RewriteRule ^([0-9]+)/$ index.php?produs=$1

La începutul regulii vedeţi o expresie regulară ce potriveşte peste numere. Dar dacă după adresa sitului sunt litere, nu cifre? Putem face să se potrivească de exemplu peste categorii: www.situlmeu.ro/index.php?categorie=mere să devină accesibil sub forma www.situlmeu.ro/mere/.

RewriteRule ^([a-zA-Z]+)/$ index.php?categorie=$1

Desigur, totul se duce pe apa sâmbetei dacă nu se respectă strict cifre pentru produse şi litere pentru categorii. Să zicem că vrem o mai mare flexibilitate. Ne imaginăm un alt exemplu: www.situlmeu.ro/index.php?filme=taken-3 să fie accesibil la www.situlmeu.ro/filme/taken-3/, iar www.situmeu.ro/index.php?actori=liam-neeson la www.situlmeu.ro/actori/liam-neeson/.

RewriteRule ^filme/([^/]+)/$ index.php?filme=$1
RewriteRule ^actori/([^/]+)/$ index.php?actori=$1

Da, plus cele 2 linii date la primul exemplu. Şi acolo nu am explicat ce e cu NC şi L în coadă: NC îi spune serverului Apache să nu ţină cont de litere mari sau mici; iar L să se oprească dacă e potrivire pe linia cu pricina. La final vă indic două legături ce sigur vă vor mai aduce lumină: Using htaccess Files for Pretty URLS şi URL Rewriting for Beginners. Succes!

Read more http://feedproxy.google.com/~r/cnetro/~3/C8X5n83_pJ4/