Ati vazut de multe ori adrese URL sau link-uri de forma:
- http://site_oarecare.dom/page.php?id=32984179823&name=ceva
Iar in alte cazuri in locul formei de mai sus ati vazut o adresa URL sau un link ce arata mai usor de citit si de tinut minte:
- http://site_oarecare.dom/numele_paginii_pe care_o_poti_tine_minte.html
Ambele sunt adrese carora li se transfera date prin metoda GET.
A doua adresa este ceea ce este numita friendly link. Link-urile prietenoase sau Human-readable URLs fac fericite pe toate lumea si pe navigatori si pe motoarele de cautare, aceasta insemnand ca acest aspect este o componenta importanta in Optimizarea pentru Motoarele de Cautare (SEO).
Motivul afirmatiei de mai sus este acela ca, oamenii tin minte mai usor aceste adrese si se vor intoarce la pagina respectiva iar motoarele de cautare (si cat de mult ne ne ghidam dupa ce vor ele...) iau parti din aceste adrese si aceasta conduce la o vizibilitate mai mare.
Cele doua adrese URL pot conduce chiar la aceeasi pagina daca i se comunica serverului Apache sa faca acest lucru. Evident ca veti prefera a doua forma de adresare, deoarece veti fi gasiti mai usor de catre motoarele de cautare si asta vrea toata lumea, nu?
pagina.php?id=2&titlu=Scrieti link-uri prietenoase cu Mod Rewrite
intr-o adresa de forma
2-Scrieti-link-uri-prietenoase-cu-Mod-Rewrite.html
Dragut, nu?
Am consultat foarte multe surse pentru a gasi solutia, dar toate explicatiile erau foarte abstracte. O sa intelegeti de ce.
Solutie
Se creaza sau se modifica fisierul .htaccess in felul urmator:
Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteRule ^([0-9]+)-([A-Za-z,.-\s]+)\.html$ pagina.php?id=$1&produs=$2 [QSA]
In fisierul care trimite datele, link-urile se construiesc in felul urmator:
La activarea link-ului fisierul pagina.php va primi prin GET valorile 7 (id) si Scrieti linkuri... (produs). Evident, cele doua valori pot fi trimise prin variabile php folosind echo $variabila ca aici:
<?php echo $id;?>-<?php echo $produs;?>
Explicatii
Semnificatia caracterelor din RewriteRule:
- ^ si $ sunt delimitatorii de sir care limiteaza numele care se va vedea in adresa;
- [0-9]+ spune ca prima variabila trimisa va fi un numar cu cifre de la 0 la 9;
- - spune ca cele doua variabile vor fi separate de acest semn;
- [A-Za-z,.-\s]+ spune ca a doua variabila este un sir de caractere, litere mici si mari dar si semnele , . - (virgula, punct, linie) si spatii;
Al doilea sir din RewriteRule este formatul php al modului de transmitere de variabile prin GET si comunica serverului identitatea, ordinea celor doua variabile si numele fisierului care le prelucreaza.
Observatii
Scrierea unei reguli RewriteRule va afecta si subdirectoarele. In aceste directoare veti scrie alte fisiere .htaccess cu reguli corespunzatoare.
Multe multumiri...
Internetului ca exista si celor care ne mai spun pe gratis cate ceva, chiar daca i-a costat mult timp sa invete!