1. Més manuals a: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
(C) Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
URL amigables
Què són les URL amigables?
Les URL amigables o URL amigable són adreces fàcils de recordar per al visitant d'un lloc web,
en alguna oportunitat haurem vist adreces com aquesta:
http://www.latevaempresa.com/productes.php?cod=pro0201&accio=3
Difícil de recordar i familiaritzar-se amb elles veritat? En canvi una URL amigable tindria un
format similar a:
http://www.exabyteinformatica.com/tienda/2913-altavoz-omega-2-0-apollo-fm-radio-sd-usb
La diferència és notòria cert.
Avantatges dels URL amigables
· Són fàcils d'endevinar i són descriptives del contingut.
· Mostren l'estructura del lloc.
· Són fàcils de comunicar verbalment en persona o per telèfon.
· Són suficientment curtes per copiar en un correu electrònic o document.
· Són estètiques per posar en catàlegs, fullets i altres documents.
· Són fàcils de recordar i escriure.
· Promouen la usabilitat evitant ser llargues i complexes.
Però el més important és que els cercadors com Google les indexen més fàcilment i donen
millors resultats de cerca.
2. Més manuals a: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
(C) Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
Com fem URL amigables amb PHP
Per a això és necessari que el nostre servidor a més de suportar PHP tingui actiu el mòdul
“*Rewrite Rules”, encara que la majoria de servidors actuals ho tenen és bo verificar-ho
primer, en cas contrari ens trencarem el cap amb els errors que ens donen, després creem un
arxiu .htaccess amb un contingut similar a aquest:
*Options +*FollowSymLinks
*RewriteEngine *On
*RewriteCond %{*SCRIPT_*FILENAME} !-d
*RewriteCond %{*SCRIPT_*FILENAME} !-f
*RewriteRule ^productes/(d+)*$ ./*product.*php?aneu=$1
El *script emmascara una adreça com *product.*php?aneu=1234 en
productes/1234/*elmeuproducte, on *RewriteCond ens permet verificar que no s'aplica si
existís realment aquesta carpeta o arxiu.
Aquesta és la forma més simple d'usar URL amigables encara que també és possible usant PHP.
Què succeeix amb les rutes relatives?
Si uses rutes amigables del tipus elmeulloc.com/categoria/elmeuproducte
Les rutes relatives que abans cridaven a les imatges, fulles d'estil i javascript deixen de
funcionar ja que s'assumeix que estàs dins d'una carpeta. La solució més simple
desafortunadament no funciona bé en IE6.
Aquesta simple línia de codi fa que el navegador s'oblidi de la teva ruta actual i únicament usi
el path que assignes.
Ja que la solució més pràctica no és creuar el navegador, cal canviar tot a rutes absolutes. Per
no haver de fer-ho a mà per a això es crea una constant amb el nostre path absolut:
define(“_*mipath”, “http://www.elmeulloc.com/”)
3. Més manuals a: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
(C) Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
I per afegir-ho als nostres arxius seria:
<img src=”*lamevaimatge.jpg”>
PHP: Url’s amigables
El primer hem d'assegurar-nos de tenir actiu el mòdul *mod_rewrite en cas contrari donarà un
error “*Internal Server Error” o simplement no funcionarà, després vam crear un arxiu .htacess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /lamevacarpeta/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Primer verifiquem el mod_rewrite després assignem la RewriteBase és a dir, la carpeta on
tenim els arxius del nostre lloc web, si es tractés de www.elmeulloc.com aquesta línia seria:
RewriteBase /
Les 2 últimes línies ens diuen que d'existir aquest arxiu o carpeta s'oblidi de la URL amigable i
usi aquests arxius.
Creant “pagina.html”
Afegim en el nostre arxiu .htacess:
RewriteRule (.*).html$ index.php?page=$1
Això genera una equivalència:
4. Més manuals a: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
(C) Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
index.php?page=lamevapagina
lamevapagina.html
Per emular carpetes
Afegim en el nostre arxiu .htacess:
RewriteRule /local/(.*)/ index.php?page=local&link=$1
RewriteRule local/(.*)*index.php?page=local&link=$1
Això genera una equivalència:
Index.php?page=local&link=bar-sant-Josep
www.elmeulloc.com/local/bar-sant-Josep/
La quantitat de paràmetres i de noms de les variables depèn de cada cas en concret.
Ús de les variables
Totes les variables GET que hem creat tant amb URL amigables com sense, mantenen els seus
noms. Per exemple en el cas:
index.php?page=local&link=bar-sant-Josep
www.elmeulloc.com/local/bar-sant-Josep/
Les variables creades en ambdues adreces són: page que té el valor local i la variable link que
té el valor bar-sant-Josep
Hem de tenir clar que amb les URL amigables, l'única cosa que estem fent és disfressar l'adreça
però aquesta disfressa altera les rutes relatives pel que possiblement fallin totes les
5. Més manuals a: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware
(C) Roger Casadejús Pérez | http://www.exabyteinformatica.com/tienda/
invocacions a fulles d'estils, javascripts i imatges que s'hagin fet sense usar una ruta absoluta,
per arreglar això hi ha 2 possibles solucions:
Alterant la ruta base (basepath)
Aquesta és la solució que més s'utilitza a causa de que l'altra solució pot no funcionar en
alguns navegadors especialment en els antics (IE6 per exemple), el que fem és guardar la ruta
absoluta en una constant que després usarem cada vegada que invoquem una imatge, css o
javascript:
define(“_*path”, “http://elmeulloc.com/”);
// Per invocar una imatge per exemple
<img src=”lamevaimatge.jpg” />
D'aquesta manera hi ha algunes variants usant short open tags, templates, funcions, etc però
la idea bàsica és la mateixa.