Quick Apache Rewrite Rule for MVC Apps

Josh Schachter, at the Future of Web Apps Summit, described mod_rewrite as both a necessity and a "dark art." For today's crop of MVC-framework web applications, it's difficult to create user-friendly and hackable URLs without it. Here are a couple rules that make it easy to direct all requests to a single controller:
 RewriteEngine On RewriteBase / RewriteRule ^(.*).html$ index.php?request=$1 [QSA,L] 
This will essentially push all files with an .html extension through your front controller. But, what if you have a file with this extension that you want to serve up? Just check to see if the file exists before redirecting to the controller:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*).html$ index.php?request=$1 [QSA,L] 
This essentially replaces the O'Reilly tutorial about creating a front controller, and it even works in Apache 2!

Patrick is development director in Viget's Boulder, CO, office. He writes clean Ruby code and automates system infrastructure for clients such as Shure and Volunteers of America.

More posts by Patrick