Cum se fac URL-uri “Google friendly” (cu MOD_REWRITE)

aprilie 22, 2010

Articol publicat in: Internet


Am incercat de vreo 3-4 ori pana acum sa folosesc mod_rewrite pentru site-urile mele. Insa de fiecare data am renuntat, deoarece documentatia era mult prea grea de inteles (sau nu aveam eu chef sa imi bat capul cu atatea reguli). In concluzie, pentru a avea pagini cu adrese URL frumoase si “search engine friendly”, am folosit redirectarea prin pagina de eroare 404.
De data aceasta, am gasit pe http://www.workingwith.me.uk/articles/scripting/mod_rewrite o explicatie foarte simpla si cu exemple clare si usor de inteles. LOL, mi-a luat cativa ani sa o gasesc, insa pana la urma am reusit. Azi am implementat MOD_REWRITE pe www.LowCostRoutes.com !

Practic, am in directorul radacina un fisier .htaccess cu urmatorul continut:

# Handle real errors with handle_404.php
ErrorDocument 404 /handle_404.php
#
RewriteEngine on
#
# 1. Redirect /en/my_page to the DPS center
# RewriteRule ^([^/\.]{2})/([^/\.]+)/?$ /DSP.php?lang=$1&page=$2 [L]
RewriteRule ^([^/\.]{2})/([^/\.]+)/?$ /DSP.php [L]
#
# 2. Redirect /en to the DPS center
# RewriteRule ^([^/\.]{2})/?$ /DSP.php?lang=$1&page=home [L]
RewriteRule ^([^/\.]{2})/?$ /DSP.php [L]
#
# 3. Redirect / to the DPS center
# RewriteRule ^$ /DSP.php?page=home [L]
RewriteRule ^$ /DSP.php [L]
#

In directorul radacina am doar 2 fisiere:
- DSP.php (dynamic page server) – creierul catre care ajunge ORICE CERERE valida (intr-un format la care ma astept, vezi mai jos) si care intelege ce anume a vrut omul doar analizand $_SERVER["REQUEST_URI"];
- handle_404.php care gestioneaza CERERILE INVALIDE, eventual trimitandu-le tot la DSP.php si logand eroarea.

Eu ma astept sa primesc cereri de forma urmatoare (CERERI VALIDE):
1. /en/my_page ( slash , 2 caractere, slash, orice altceva in afara de slash si punct, un eventual slash)
2. /en sau /en/
3. / (cand cineva doat tasteaza numele de domeniu)

Daca cererea nu e valida, atunci serverul NU RESCRIE CERERE, ci incearca sa caute fisierul respectiv pe server (exemplu: imagini sau fisiere statice).
Daca nu gaseste fisierul pe server, atunci genereaza o eroare 404 si incarca pagina handle_404.php.

Pentru explicatii detaliate, recomand calduros articolul de pe blogul de mai sus!

Tags: , , , ,



Leave a Reply

(insereaza codul din stanga)
Weblog

Toate drepturile rezervate Weblog.ro

X