Nginx location rule for Wordpress Multisite in subdirectories

Francis Daly francis at daoine.org
Mon Aug 27 20:47:38 UTC 2012


On Sun, Aug 26, 2012 at 02:40:40PM -0400, Ian M. Evans wrote:

Hi there,

> I need to be able to catch the above in either /blog or its suddirs, since
> WP installs a main blog in the /blogs dir i.e.:
> 
> location ^~ /blogs {
>   try_files $uri /blogs/index.php?q=$uri;
> 
> and
> 
> location ^~ /blogs/blog1 {
>   try_files $uri /blogs/blog1/index.php?q=$uri;
> 
> 
> I realize I could create locations specific to each dir, but is there a
> wildcard way to do this?

nginx locations can be "regex" or "prefix". If you have a url prefix which
matches all of the subdir blogs, and none of the non-subdir blogs, then
something like the following might work (I assume that all subdir blogs
start with /blogs/blog; and therefore that everything that does not start
with that pattern belongs to the /blogs location, which remains as-is.):

==
  if ($uri ~ (/blogs/[^/]*)) {
   set $blogname $1;
  }

  include fastcgi.conf;

  location ^~ /blogs/blog {
    try_files $uri $blogname/index.php?q=$uri;
    location ~ php {
      fastcgi_pass 127.0.0.1:10004;
    }
  }
==

If you haven't got a clear prefix separation for the blogs, then you
might want to try a regex location; or perhaps something involving "map"
which will (probably) require enumeration all of the blogs.

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list