jest kilka drog:
1. PATH_INFO
jezeli nie masz mod_rewrite w Apacheu (wzglednie analogicznego mechanizmu w innym daemonie) to musisz korzystac z $_SERVER['PATH_INFO']. tyle ze wtedy tez server musi byc skonfigurowany tak, zeby przekazywac do twojego pliku zapytrania do nie istniejacych plikow. na przyklad:
Kod
http://example.com/newsy/tytul_newsa
byloby przekazane do index.php w polu $_SERVER['PATH_INFO'] jako
/newsy/tywul_newsa (zwroc uwage na poczatkowy slash!, po wykonaniu explode('/', $_SERVER['PATH_INFO']) pierwsze pole wyniku bedzie puste!).
2. mod_rewrite + wszystko w .htaccess
jesli masz mod_rewrite (w przypadku Apachea, na innych serverach inaczej sie to moze nazywac, ale chodzi o efekt) to poczytaj o konfiguracji mod_rewrite przez pliki .htaccess (RewriteEngine, RewriteRule powinny ci starczyc, wzglednie RewriteBase i RewriteCond moga sie przydac). wtedy po prsotu tworzysz sobie liste przypisanych URLi, na przyklad:
Kod
RewriteEngine On
RewriteRule ^newsy/(.+)$ /news.php?tytul=$1
(trzeba znac wyrazenia regularne). zwroc uwage, ze zapytania sa bez poczatkowego slasha!, a nadpisane sciezki sa pelna sciezka zapytania, wiec moga (a nawet powinny) zawierac slash na poczatku, zeby powiedziec, ze odnosi sie to bezposrednio do lokalizacji w DocumentRoot twojego hosta.
3. mod_rewrite + przetwarzanie w PHP
chyba najbardziej elastyczna metoda i moja ulubiona. tworzysz plik .htaccess w ktorym przepisujesz wszystkie zapytania (z wyjatkiem powiedzmy wykluczonych sciezek do styli, obrazko, pikow .js i tak dalej...) do swojego skryptu PHP, ktory moze w dowolny (czytaj - bardziej elastyczny niz sam .htaccess) wykonywac akcje bazujac na przekazanej sciezce. przyklad:
Kod
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/upload/
RewriteRule ^(.*)$ /index.php?run=$1 [L]
tutaj juz RewriteCond bedzie niezbedny. zworc tez uwage na druga linijke i argumenty do ostatniej z nich - sa niezbedne aby zapobiec zapetleniu!
to tyle na szybko, a dla szczegolow to poszukaj, takie rzeczy byly na forum nie raz a o PATH_INFO jest nawet art na php.pl.