si usas apache puedes crear un archivo .htaccess en el directorio de la web y poner algo asi:
RewriteEngine On
RewriteRule REGEXP ARCHIVO
donde REGEXP es una expresion regular del texto a buscar en la url y archivo es el archivo al que sera enviada esa peticion
si no quieres liarte a meter reglas para todos los contenidos de tu sitio, puedes por ejemplo hacer una regla que capture todo (de hecho, tambien se podria hacer una regla que capture todo menos archivos que existan en el disco) y lo mandas a un archivo de script que haga de router, por ejemplo algo rollo:
RewriteRule ^([-_!~*'()$a-zA-Z0-9]+)/?$ ./router.php
(el regexp no lo he escrito a mano porque me da pereza pensar, pero parece bastante decente para urls amigables, solo caracteres normales y algunos especiales, con / opcional al final. ojo, este regexp no admite multiples "directorios" pero si añades la / a los caracteres aceptables eso se soluciona)
eso mandaria las peticiones a un archivo php alojado en la raiz de tu sitio llamado router.php, en el cual tu podrias asignar la accion correspondiente a cada url, como te venga en gana
mas info sobre este sistema de apache en los docs de
mod_rewrite