# Shkenca > Informatikë dhe Internet > Arti i programimit >  PHP - URL Rewriting

## Gepardi

Kam illuar nga puna per te krijuar nje PHP Class qe ben te mundur URL Rewriting. Me fjale te tjera nqs nje URL eshte e trajtes:

http://forumishqiptar.com/forumdisplay.php?f=69 te kthehet ne trajten http://forumishqiptar.com/forumdisplay.php/f/69

Gjithashtu kjo te beht pa perdorur mod_rewrite te APACHE

Kjo pune ka keto pika kyce:
1. Para se te nxirret faqja (Output) duhet qe me funksionet qe kontrollojne 
Output Buffering te rishkruhen te gjitha  URL qe ndodhen ne faqe .
2. Scripti te njohe variablat qe ne kete rast nuk kalohen nepermjet GET por do te nxirren nga puna me $PATH_INFO te PHP
3. Te mos shkaktohen probleme ne shfaqjen e imazheve sepse browseri tek nje URL si http://forumishqiptar.com/forumdisplay.php/f/69 pjesen f/69/ e merr si direktori dhe  tek nje img tag pra <img src='images/buton.gif'> kjo do te nxjerre probleme.

Nqs ndonjeri ketu ka deshire mund te ndihmoje ne krijimin e klases ne pjese te ndryshme. P.SH metodat per kapjen e URL, rishkrimin e tyre etj. Por puna duhet te jete OBJECT ORIENTED pra te krijohet nje klase me metodat e saj.

----------


## edspace

Si fillim, një kërkim i vogël në google zbuloi se një klasë e tillë është shkruajtur njëherë. Përmbahet në lishencën GNU që do të thotë se mund ta përdorësh falas. 
Megjithatë edhe po nuk e përdore, është mirë të studiosh mënyrën si është ndërtuar dhe pastaj mund ta përmirësosh sipas nevojave. 

Klasa gjendet në këtë faqe.

Është shumë e ngadaltë, prandaj po e hedh këtu kodin që shkarkova. 

Nqs ke dëshirë ta shkruash vetë klasën, në lidhje me pikën 3 (problemet me imazhet), HTML ka etiketën <base> që të lejon të caktosh direktorinë bazë për të gjitha URL relative të trajtës href="../foto.gif" ose href="/shkarkime/program/c.zip" ose href="forumi.exe"

Përdorimi i <base> është i tillë:

*index.php* 


```

<html>
<head>
<base href="http://www.forumishqiptar.com/">
</head>
<body>
<a href="/newreply.php">përgjigju</a>
</body>
</html> 


```

Nqs e hapim faqen më lart me adresën http://forumishqiptar.com/index.php/dosje/fallco/ 
lidhja *përgjigju* do jetë http://forumishqiptar.com/newreply.php

Pra, kjo e zgjidh problemin e lidhjeve gabim.

----------


## Gepardi

Kete klase e kam perdorur dhe kjo kerkon qe te vendosesh nje file .htaccess pra eshte e varur nga webserveri Apache. Persa i perket <base> eshte pikerisht ajo qe me duhet.

Llogjikisht faqja do te ngadalesohet por kjo vihet re ne faqe te medha. Nqs psh do ta perdoresh ne nje faqe qe shperndan lyrics(tekste kengesh) kjo nuk do te krijoje ndonje ngadalesim te madh. Perse duhet? Motorri Kerkues e ndjek me thjeshte nje lidhje te tipit qe pershkrova me lart sesa nje lidhje qe permban ? . dhe ne kete menyre tekstet e kengeve p.sh do te listoheshin me shpejt ne te.

----------


## edspace

Për faqet që kanë informacion të pandryshueshëm si tekstet e këngëve, është më mirë të shkruash një skript në PHP që të krijojë faqet HTML automatikisht. Këtë mund ta bësh njëherë në javë për të mos ngarkuar sërvërin. 

Gjithashtu ki parasysh se Google (mbase dhe motorët e tjerë) kanë ndryshuar tani dhe gjejnë edhe faqet me PHP siç është forumi. 
http://www.google.com/search?hl=sq&q...mishqiptar.com

Shumica e internetit përdor faqe dinamike dhe konkurenca e madhe po i shtyn motorët që të kenë teknologjinë më të mirë për të arkivuar të gjitha faqet, jo vetëm ato të HTML. Pra,  rishkrimi i URL po e humbet vlerën dhe nuk më duket aq e rëndësishme. Ki parasysh se duke shkruajtur një skript të tillë jo vetëm që komplikon faqet por edhe mund të rrezikohesh nga hackers. A ja vlejnë këto për të bëre punën e google më të lehtë?

Në lidhje me klasën që përmënda, ndryshimi midis asaj që është shkruajtur dhe asaj që do të bësh ti është se ti e do URL të tillë:
http://www.forumishqiptar.com/index.php/dosje/fallco/
ndërsa klasa e NH nxjerr një adresë të tillë:
http://www.forumishqiptar.com/index/dosje/fallco/

Me sa shoh ky është i vetmi ndryshim dhe e vetmja arsye pse klasa e NH përdor .htaccess
Për të mos u lodhur, do ishte më mirë të ndryshoje atë që është bërë deri tani që të eliminosh .htaccess.

Kodi që ndërton URL gjendet në metodën _rewrite_url()



```

// build new URL
$temp[0] = str_replace('.php','',$temp[0]);
$newurl  = $this->host.URL_REWRITE_SCRIPT.$this->_checkTrailingSlash($temp[0]).$this->separator;
$this->_checkTrailingSlash($newurl); 


```

Rreshti me str_replace() eliminon prapashtesën (.php). Po ta heqësh atë rresht, besoj se URL do dalin ashtu qysh do ti dhe nuk do jetë nevoja e (.htaccess) për ridrejtimin e kërkesave. Provoje njëherë.

----------

