Citat:
boccio:
elem, sto se tice mod_rewrite tu nemam da pitam sta, objasnjeno mi je na koji se tu nacin vrsi obrada url-a, treba "samo" da provalim kako ja to da napisem...
Evo, daću ti niže primer kako da uradiš upravo ono što pomenuti CMS obezbeđuje, i to pomoću mod_rewrite. Zbog toga je i došlo do nesporazuma: mod_rewrite ti omogućava da napraviš i takve stvari, i to dosta jednostavno, pa nema potrebe vezivati se isključivo za taj CMS u ovoj raspravi.
Ukratko, za upotrebu mod_rewrite treba da znaš nekoliko stvari:
— regularne izraze (regular expressions, re)
— način obrade zahteva u Apačiju
Citat:
a za ovo drugo (CMS), tu me sad interesuje kako se obradjuje url (u stilu 0,3971,23466,00.asp) tako da pitanje i dalje stoji (neki primer, hint, url?)
Evo kako sam ovo „testirao“. Napravio sam direktorijum „obrada“ (ekvivalent onom „category2“, naravno, ti prilagodi sebi), i u njega smestio .htaccess i obrada.php. Polja sam nazvao prema Mikisovom objašnjenju gore, pošto ja zaista ne znam šta ona označavaju.
Code:
#.htaccess
Options +FollowSymLinks
DirectoryIndex obrada.php
RewriteEngine On
RewriteBase /obrada
RewriteRule !^obrada\.php.*$ - [C]
RewriteRule ^([0-9]+),([0-9]+),([0-9]+),([0-9]+)\.asp$ /obrada/obrada.php?cached=$1&template=$2&document=$3&nesto=$4
Ovde su ti najznačajnije ove RewriteRule linije. Prva propušta (ono „[C]“) sve zahteve koji počinju sa „obrada.php“, a druga hvata sve „1,131,4393,292929.asp“ i preusmerava ih na obrada.php.
Ako poznaješ regularne izraze, znaćeš da ([0-9]+) označava bilo koji broj cifara, ali bar jednu cifru. U konkretnom primeru, možda je bolje koristiti npr. ([0-9]{3}) za tačno 3 cifre ili nešto slično, a ti potraži brojnu dokumentaciju na temu regularnih izraza da bi to lepo svario.
Kao primer sam koristio ovakav fajl obrada.php:
Code:
<?php
foreach (array("cached","template","document","nesto") as $polje) {
echo "<b>$polje:</b> $HTTP_GET_VARS[$polje]<br>\n";
}
?>
On će samo ispisati ove primljene promenljive, a kada ti praviš nešto ozbiljnije, tu ćeš obaviti obradu kakva god tebi odgovara, i isporučiti sadržaj na osnovu tih parametara (npr. možda dotični CMS tu proverava da li je dokument keširan, a ako nije preuzima iz baze sadržaj dokumenta sa ID-om $HTTP_GET_VARS[document], i pomoću šablona $HTTP_GET_VARS[template] formira odgovarajući HTML, i to isporučuje klijentu).
Takođe, postoji i druga varijanta, a to je da se
svi URL-ovi prebacuju na skriptu obrada.php, koja ih na Apači serveru može pročitati pomoću npr. $PATH_INFO promenljive. Za sve to, pogledaj zaista kvalitetnu dokumentaciju Apačija i PHP-a. Ona je možda konfuzna samo kada ne znaš šta da tražiš, a sada sam ti dao dovoljno nagoveštaja (RE, regular expressions, PATH_INFO).
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.