Rewrite WordPress and ZenPhoto for Nginx
nginx wordpressNginx also supports URL rewrite, not compatible to Apache’s mod_rewrite, but
more intuitive and more powerful imho. The only problem is most applications,
WordPress and ZenPhoto for this specific case do include the mod_rewrite code
snippet and/or may update the .htaccess
for your convenience.
Thanks to the Slicehost community, the port of mod_rewrite rules perfectly covers WordPress and SuperCache. Here are some minor modification to craft for more general usage:
# the blog dir, aka where index.php is
set $blog_dir '';
# the wordpress dir where all wp-* stays
set $wordpress_dir '/wordpress';
include wordpress.rewrite;
In nginx.conf
, define wordpress_dir
and blog_dir
, these two variables are
equivalent to WordPress address (URL) and Blog address (URL) stripped off the
host information. Then we can replace the hard-coded /blog path by using
$wordpress_dir
or $blog_dir
:
2d1
<
26c25
< set $supercache_file /blog/wp-content/cache/supercache/$http_host/$1index.html;
---
> set $supercache_file $wordpress_dir/wp-content/cache/supercache/$http_host/$1index.html;
36c35
< rewrite . /blog/index.php last;
---
> rewrite ^(.*)$ $blog_dir/index.php?q=$1 last;
Here is my zenphoto.rewrite, it seems sivel’s more concise. Either of these should work.