Hola, podrias usar algo asi:
Código Apache:
Ver original# Carpetas de las cuales vas a servir directamente todos los archivos:
RewriteCond %{REQUEST_URI} !^(lib|img|ajax|cache|includes|lang|css|images|js|ws)/(.*)$
# Extenciones de archivos que vas a servir directamente de la carpeta base:
RewriteCond %{REQUEST_URI} !^([A-Za-z_-]*).(jpg|css|png|gif|js)$
# Extenciones de archivos que vas a servir directamente desde cualquier carpeta:
RewriteCond %{REQUEST_URI} !^(.*)/([A-Za-z_-]*).(jpg|css|png|gif|js)$
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
Edito:
Si en tu script validas que la url no existe puedes usar la funcion
header para redireccionar.
Aunque, si estas usando un sistema en que manejas las url por un script, te recomiendo personalizar bien el ejemplo que te paso y devolver un 404 en caso de que no este la pagina registrada, ya que sino, tendras url reales, url ficticias/amigables, urls registradas y a la larga, cuando el proyecto crezca, se hara dificil de administrar, mejor haz que pase todo por un mismo lugar.
Solo un consejo, tu haz lo que quieras. saludos.