Fun Zone = Distractie 100 %
Doriti să reactionati la acest mesaj? Creati un cont în câteva clickuri sau conectati-vă pentru a continua.

Cele mai frumoase URL-uri

In jos

Cele mai frumoase URL-uri Empty Cele mai frumoase URL-uri

Mesaj  cristiano_ronaldo Vin Mai 30, 2008 4:09 pm

Cea mai frumoasa si mai gustoasa supa nu are nici o legatura cu
farfuria in care este pusa. Ati incercat totusi sa mancati cea mai
frumoasa si mai gustoasa supa dintr-o farfurie perfect plata? Stiti,
sunt farfuriile acelea patrate si mari, mari de tot, care fac o supa la
fel de buna ca mult prea mult bors.


Un site este asemanator unei astfel de supe in multe privinte.
Toate ingredientele pot fi perfect echilibrate, iar siteul poate lasa
un gust perfect in mintea vizitatorului, insa totul depinde de modul in
care siteul ajunge la vizitator. URL-uri frumoase si usor de tinut
minte sunt la fel de importante ca restul siteului.

Si Google mananca supa din farfurie adanca

Oricat de ciudat
suna, asa este. Motoarele de cautare precum Google nu indexeaza decat
anumite URL-uri, in speta, le sare pe acelea care contin caractere
ciudate precum ? sau &, sau alte extensii decat .html (de exemplu,
.php). Si atunci siteul nostru nu mai este indexabil. Problema trebuie
rezolvata cat mai repede.




Cum va place urmatorul URL:




http://www.example.com/index.php?pid=categories&action=edit&eid=14




Am putea sa-l schimbam foarte usor, pentru a arata in felul urmator:




http://www.example.com/categories/edit/14/




Mult mai bine acum, nu? Plus ca este usor de retinut si indexabil.

Apache si .htaccess

Pentru a realiza acest mic feat trebuie
sa-i spunem serverului sa ne transforme URL-ul primit la o cerere HTTP
intr-unul de o forma mai atragatoare. Apache permite rescrierea
URL-urilor printr-un modul minunat numit mod_rewrite. Pentru a
specifica niste reguli de rescriere pe care acest modul sa le
foloseasca, vom utiliza fisierul .htaccess.


In radacina siteului vostru creati un fisier fara nume, doar
cu extensia .htaccess. Acest fisier este de tip text si in el vom scrie
ce ne trebuie. Este bine sa setam in scripturile noastre parametrii
impliciti si sa prevedem URL-uri de forma:




http://www.example.com/categories/

http://www.example.com/categories/edit/
De
aceea vom incepe rescrierea progresiv, cu primul parametru, apoi cu al
doilea si asa mai departe. Pentru a fi siguri de rezultat, vom incepe
fisierul nostru .htaccess cu o conditie:





<IfModule mod_rewrite.c>

RewriteEngine on

</IfModule>




Conditia testeaza existenta modulului mod_rewrite. In cazul in
care el exista, il va porni. Desi el este setat pe ON in majoritatea
pachetelor de hosting, niciodata nu strica sa verifici. Sa purcedem
acum la rescriere.


Fiecare pagina a siteului va avea un numar de parametri $_GET, pornind
de la 0 la un numar maxim pe care va trebui sa-l stabiliti voi.
Majoritatea programatorilor prefera modelul de tip MVC, in care primul
parametru este pagina, al doilea actiunea, iar ceilalti doi variaza. In
exemplul nostru nu am avut nevoie decat de id-ul elementului ce trebuia
editat. Presupunem deci ca avem un GET de forma:






$_GET = Array(

page,

action,

param1,

param2

)







Haideti sa rescriem primul parametru, "page". Vom utiliza comanda rewriteRule pentru a stabili regula.






RewriteRule <regex::rezultat> <string::URL>





Prima parte a comenzii, <regex::rezultat> reprezinta
rezultatul la care vrem sa ajungem, iar a doua,
<string::URL>#end_code este URLul initial cu ? si & cu care
suntem obisnuiti. Apache va modifica toate URLurile de forma
<regex::rezultat> in URLuri de forma
<string::URL>#end_code. Astfel, daca vom scrie in browser
<regex::rezultat>, serverul va trimite inapoi
<string::URL>. Nimic mai simplu. Dar sa lamurim printr-un
exemplu.

Practica nu ne omoara




RewriteRule ^([a-zA-Z]+)[/]*$ \?page=$1





Am utilizat regular expressions. Daca nu va sunt familiare, va
spun doar ca ceea ce pare complicat de fapt nu este. Puteti citi
tutorialul precedent pentru a va lamuri ce inseamna tot ce am scris
acolo. Promit ca o sa fie de folos.




Prin urmare, ce am facut este sa-i spun Apacheului ca atunci cand intalneste un URL de forma "/" sa serveasca browserului pagina aflata la URLul \?page=,
adica pagina normala server-side pe care o foloseati pana acum. $1 din
sirul \?page=$1 inseamna prima paranteza din regexul precedent, adica
^([a-zA-Z]+)[/]*$.



Sa trecem mai departe la al doilea parametru: action.






RewriteRule ^([a-zA-Z]+)[/]([a-zA-Z]+)[/]*$ \?model=$1&action=$2






Nu am facut decat sa repetam prima paranteza, iar in URLul initial sa
scriem &action=$2, intocmai cum am fi scris inainte, cand foloseam
URLuri cu $_GET. Pentru al treilea si al patrulea parametru vom proceda
intocmai.

Si acum cum ne mai folosim de $_GET?

E o intrebare fireasca.
Daca URLul nostru arata acum astfel:
http://www.example.com/categories/edit/14/
atunci unde gasim cheile si valorile din $_GET. Nu uitati ca am
stabilit niste chei standard, pe care le-am folosit in RewriteRule:
page, action, param1 si param2. Acestea sunt cheile arrayului $_GET,
iar valorile sale sunt caracterele dintre slash-uri. Astfel, cunoscand
aceste chei si privind URLul nostru, putem deduce usor GET-ul:






$_GET = array (

'page' => 'categories',

'action' => 'edit',

'param1' => '14'

)





In spatele acestui URL, serverul utilizeaza de fapt un alt URL,
si anume cel pe care il utilizam noi inainte de a invata rewrite:




http://www.example.com/index.php?pid=categories&action=edit&eid=14


Practic, URLul rescris,
http://www.example.com/categories/edit/14/, nu este decat "de ochii
lumii", serverul lucrand in continuare la fel. Astfel, veti putea
utiliza GET-ul ca si pana acum.



Puteti modifica aceste chei pentru a va servi propriului site. Nu uitati sa modificati si in .htaccess.



Intreaga smecherie este insa de a utiliza aceiasi parametri, aceleasi
chei ale arrayului GET. Daca siteul tau are doua pagini, si fiecare
pagina are parametrii ei, vei avea mai multe reguli de scris - cate una
pentru fiecare parametru - plus ca va trebui sa verifici in regex ce
fel de parametru ai. Daca parametrii GET nu sunt comuni intregului
site, URLul ar trebui sa se transforme in:




http://www.example.com/page/categories/action/edit/




iar regula in:





RewriteRule ^([a-zA-Z]+)[/]([a-zA-Z])+[/]([a-zA-Z]+)[/]([a-zA-Z]+[/])$ ?$1=$2&$3=$4




Acest lucru este necesar pentru pastrarea numelor parametrilor,
in cazul in care acestia sunt diferiti de la pagina la pagina. Daca
insa alegeti acelasi nume pentru toti parametrii din site, va va fi
mult mai usor sa lucrati si nu va mai fi nevoie sa transmiteti numele
parametrilor in URL. Daca totusi ati utilizat parametrii diferiti, o
solutie este sa le schimbati numele in "param1", "param2" etc. Daca
faceti asa, va trebui sa modificati scriptul si sa fiti atenti la
ordinea parametrilor in URL.



Exemplu:
pagina 1 = ?cat=1&id=213
pagina 2 = ?firma=32&user=no




Parametrii vor trebui sa se transforme astfel:
Pagina 1 : cat in param1, id in param2
Pagina 2 : firma in param1, user in param2


cristiano_ronaldo
cristiano_ronaldo
Level 2
Level 2

masculin
Numarul mesajelor : 80
Warn :
Cele mai frumoase URL-uri Left_bar_bleue0 / 1000 / 100Cele mai frumoase URL-uri Right_bar_bleue

Puncte : 0
Reputatie : 0
Data de inscriere : 22/05/2008

Sus In jos

Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum