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"