Wordpress Multisite与nginx。匹配位置内的子目录

时间:2016-08-24 23:21:07

标签: wordpress nginx

我在子目录中运行了多个WordPress网站。

一切都很好,但我希望简化我的nginx配置。

目前,当我添加位置时,我需要在指定目录的服务器{}配置中添加一个条目。

    location / {
      try_files $uri $uri/ /index.php?q=$args;
    }

    location /site1 {
      try_files $uri $uri/ /site1/index.php?q=$args;
    }

    location /site2 {
      try_files $uri $uri/ /site2/index.php?q=$args;
    }

    location /site2 {
      try_files $uri $uri/ /site3/index.php?q=$args;
    }

    location /site4 {
      try_files $uri $uri/ /site4/index.php?q=$args;
    }

我尝试添加正则表达式来匹配子目录,但似乎有问题。

  location /([_-0-9a-zA-Z]/?) {
     try_files $uri $uri/ /$1index.php?q=$args;
  }

似乎没有做到这一点。理论上应该匹配一个子目录,或者什么都不匹配,并且能够让我添加新目录而不必触及nginx配置。

任何指针都会受到赞赏。

@jedifans指出了如何使正则表达式工作

感谢。这可以在任何页面上实现,但是当我去/它只是尝试下载index.php。

location ~ \.php$ {
  try_files $uri =404;

  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  include fastcgi_params;
  fastcgi_pass php70;
  fastcgi_keep_conn on;
}

location ~ ^/([_\-0-9a-zA-Z]*/?) {
  try_files /$1$uri /$1$uri/ /$1index.php?q=$args;
}

但是,当我访问domain.com/site1/时,我会下载index.php而不是主页。有什么遗漏?

1 个答案:

答案 0 :(得分:0)

我认为你在新的位置块中缺少以下内容,〜运算符对nginx说它是正则表达式。尝试:

  location ~ ^/([_-0-9a-zA-Z]*/?) {

一些正则表达式调整,^说它必须以/和*开头,以匹配[和]中的多个字符

编辑:更新问题后,请尝试以下try_files指令:

try_files $uri $uri/ /$1/index.php?q=$args;

$ uri应该在没有匹配字符串的情况下工作,并且我在匹配的查询和index.php之间添加了一个/;

同时确保index index.php;处于server{}级别。