как пример использования mod_rewrite:
RewriteEngine on
RewriteBase /
#блокировать доступ к папкам, в которые кроме скриптов никто лазить не должен
RewriteRule ^(admin/)?(inc|modules|sql) 404/ [L]
#если файл реально существует (картинки например), то выдать это файл
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]
#если это папка, и в ней есть index, то выдать этот index
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^ %{REQUEST_FILENAME}/index.php [L]
#а если index нету, то блокировать
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule ^ 404/ [L]
#если запрашивается папка admin, то все что идет после admin/ передать на admin/index.php (например admin/news/add -> передает /news/add)
RewriteRule ^admin/(.*[^/]) admin/index.php?www=/$1/ [QSA,L]
#а теперь все что осталось

RewriteRule ^(.*[^/]) index.php?www=/$1/ [QSA,L]