Finally using nginx's "try_files" directive
March 19th, 2009
20 comments
OLD:
error_page 404 = /wordpress/index.php?q=$request_uri;
or:
if (!-e $request_filename) {
rewrite ^/(.*) /wordpress/index.php?uri=$request_uri last;
}
NEW:
try_files $uri $uri/ /wordpress/index.php?q=$uri&$args;
Why make life more complicated if you don't need to?
Also thanks to Igor's patch you can have multiple of these, i.e.:
location /wordpress {
try_files $uri $uri/ /wordpress/index.php?q=$uri&$args;
}
location /anotherapp {
try_files $uri $uri/ /anotherapp/controllerfile.php?q=$uri&$args;
}
etc.
This is good, as Drupal, WordPress and many other packages (including anything I develop anymore) use the Front Controller pattern of development, which makes deploying applications a lot simpler and helps support a consistent framework across the entire application.
NOTE: Updated on 1/5/10 to include the $args 🙂