Howdy Faizan,
Check the mod_rewrite documentation:
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
Rewrite rules behave differently in .htaccess files and in virtual host configurations:
"In VirtualHost context, The Pattern will initially be matched against the part of the URL after the hostname and port, and before the query string (e.g. "/app1/index.html").
In Directory and htaccess context, the Pattern will initially be matched against the filesystem path, after removing the prefix that led the server to the current RewriteRule (e.g. "app1/index.html" or "index.html" depending on where the directives are defined)."
This means you have to the whole URI when you're defining locations — at least a "/" before things like "engine/handlers/page_handler.php?handler=$1" and maybe more if there's more to the URI that's been assumed by the .htaccess file.
Let me know if that doesn't make sense.
Cheers!