Det beror på en teknik som kallas URL rewrite. T.ex. mod_rewrite i apache.
Lite intro till rewrite:
http://en.wikipedia.org/wiki/Rewrite_engine
Url rewrite guide i apache:
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
De flesta framework och färdiga system (typ wordpress) ber webbservern att redirecta alla urler som inte är en fil eller mapp som faktiskt finns till index.php och sedan läser dem av urlerna i t.ex. $_SERVER['REQUEST_URI] i php.
edit:
Exempel på funktion för att avläsa urler:
Kod:
function url_segment($x) {
$uri=explode('?',$_SERVER['REQUEST_URI']);
$segs=explode('/',$uri[0]);
array_shift($segs);
if(array_key_exists($x,$segs)) return escape($segs[$x]);
else return false;
}
Så om du anropar den som url_segment(0) så får du det som kommer efter första slashet.
Funktionen filtrerar bort query-stringen. (Frågetecken och allt efter det)
Finns det inget på den positionen som efterfrågas så returneras false.
Det som returneras filtreras även med en funktion vid namn escape för att förhindra sql injections.
Den funktionen ser ut såhär:
Kod:
function escape($x) {
if(get_magic_quotes_gpc())stripslashes($x);
return htmlspecialchars($x);
}
Ett litet exempel på hur man kan göra för att läsa av urler på ett fint sätt.