Nginx位置指令中子目录的正则表达式或通配符

时间:2019-07-17 18:48:10

标签: wordpress nginx

我有一些开发人员,他们将在其本地计算机上编辑多个Wordpress网站。我想一次为他们设置Nginx,而无需他们将来编辑配置文件。通常,当Nginx配置为托管Wordpress时,会包含一个诸如以下的位置块:

location / {
try_files $uri $uri/ /index.php$is_args$args;
} # End location

在我们的情况下,每个WP站点都将位于其自己的子目录中。因此,当开发人员需要查看网站时,他们将在浏览器中转到以下网址:

http://localhost/site1
http://localhost/site2
http://localhost/site3

我们希望上面的location指令包含子目录。现在,它仅包含根(http://localhost),而不包括子。我认为这需要某种通配符或正则表达式,但是我不确定。

换句话说,我想我正在寻找一个位置块,例如:

location /all-subdirectories {
try_files $uri $uri/ /whatever-subdirectory/index.php$is_args$args;
} # End location

这有意义还是我走错了路?

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式 location来捕获URI的第一部分,例如:

location ~ ^(/[^/]+) {
    try_files $uri $uri/ $1/index.php?$args;
}

或者使用带有一个或多个rewrite语句的命名位置,例如:

location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(/[^/]+) $1/index.php last;
}