---
title: "Finally using nginx's \"try_files\" directive"
date: 2009-03-20
canonical: https://michaelshadle.com/2009/03/19/finally-using-nginxs-try-files-directive
---

# Finally using nginx's "try_files" directive

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](http://en.wikipedia.org/wiki/Front_controller) 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 :)
