Rescrierea URL in ceva mai citibil

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator


Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Lun Feb 13, 2012 7:26 pm

Rescrierea de URL-uri se face din Apache, adica din server-ul de web.
Cand tu scrii o adresa in browser, de fapt initializezi un request, care cere ceva server-ului de web.

Daca tu scrii in browser
www.site.com/?id=2

atunci server-ul de web primeste ca si request, pe langa "datoria de a afisa pagina ta web" un $_GET['id'] = 2

Mod rewrite este un modul Apache (care trebuie activat, daca nu este) care "spune server-ului" de web ca urmeaza sa faca o redirectionare.. Pentru a face aceasta redirectionare este nevoie de niste reguli (RewriteRule) care spun server-ului ce si cum sa redirectioneze.

Aceste reguli se scriu in fisierul .htaccess (care de obicei se afla in radacina site-ului)
De exemplu

# este nevoie sa zici ca este pornit rewrite-ul
# adica, sa spui Apache-ului ca "de aici inainte vei redirectiona"
RewriteEngine on

# o regula simpla
RewriteRule ^whatever/(.*)$ index.php?page=$1 [L]

Acum, daca scriem in browser www.site.com/whatever/ceva
de fapt server-ul de web va primi un request
$_GET['page'] = 'ceva'

Atentie, daca folder-ul whatever exista ar trebui sa ai si o conditionare

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^whatever/(.*)$ index.php?page=$1 [L]

Asta zice:
Daca fisierul pe care il accesezi din browser
- nu este un fisier valid
- nu este un director valid
atunci executa redirectionarea


Vezi
http://www.workingwith.me.uk/articles/s ... od_rewrite
si cauta pe google "rewrite examples"

sashaP
PHPRomania Supporter
Mesaje: 19
Membru din: Mie Apr 02, 2008 11:59 am

Mesajde sashaP » Mar Feb 14, 2012 4:44 pm

vectorialpx, multumesc de raspuns, totusi nu gasesc solutia pentru problema mea. Daca e sa rezum, am nevoie sa inlocuiesc partea din url care reprezinta un ID cu denumire atasata acestui ID in baza de date. Adica ?id=1 sa nu se transforme in site.ro/1/, ci in site.ro/Carti-despre-php. Dupa cum te-ai priceput, tabela din baza de date arata cam asa:

id | Denumire
---------------------------
1 | Carti despre Php
2 | Carti despre mysql

Sper ca mi-am expus corect gandurile. Stiu ca se poate de realizat, insa nu-mi dau seama cum. Am vazut deja ceva asemanator implementat la WordPress

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Mar Feb 14, 2012 5:36 pm


Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Mie Feb 15, 2012 11:39 am


quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Mie Feb 15, 2012 11:45 am



Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 23 vizitatori