this is plain simple what all MVC frameworks do, hide your code and use a single front file to handle all requests and redirect them using a router class.

so if you want to hide index.php then you need to find a way to tell your server to simply redirect any call to index.php.

index.php is the access door for your website, and your server need to know that all requests must be sent to it. some way or another, and thats why index.php/ must exisit in ur url or use some server configuration to redirect calls to it. but it is always loaded

SO HOW WE CAN REMOVE IT ?

I have use following method, it is working perfectly in UBUNTU...!!

First of all verify that you have enabled mod_rewrite (you can verify using phpinfo()) in your index.php file.

RewriteCond basically means "execute the next RewriteRule only if this is true". The !-l path is the condition that the request is not for a link (! means not, -l means link)

The RewriteRule basically means that if the request is done that matches ^(.+)$ (matches any URL except the server root), it will be rewritten as index.php?url=$1 which means a request for ollewill be rewritten as index.php?url=olle.

QSA means that if there's a query string passed with the original URL, it will be appended to the rewrite (olle?p=1 will be rewritten as index.php?url=olle&p=1.

L means if the rule matches, don't process any more RewriteRules below this one.