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

Wordpress Nginx location指令中子目录的正则表达式或通配符,wordpress,nginx,Wordpress,Nginx,我有开发人员,他们将在本地机器上编辑多个Wordpress站点。我想为他们设置一次Nginx,而不需要他们在将来编辑配置文件。通常,当Nginx配置为承载Wordpress时,会包含这样的位置块: location / { try_files $uri $uri/ /index.php$is_args$args; } # End location 在我们的情况下,每个WP站点将位于其自己的子目录中。因此,当开发人员需要查看网站时,他们将转到浏览器中的URL,例如: http://localho

我有开发人员,他们将在本地机器上编辑多个Wordpress站点。我想为他们设置一次Nginx,而不需要他们在将来编辑配置文件。通常,当Nginx配置为承载Wordpress时,会包含这样的位置块:

location / {
try_files $uri $uri/ /index.php$is_args$args;
} # End location
在我们的情况下,每个WP站点将位于其自己的子目录中。因此,当开发人员需要查看网站时,他们将转到浏览器中的URL,例如:

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

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

location /all-subdirectories {
try_files $uri $uri/ /whatever-subdirectory/index.php$is_args$args;
} # End location
这有意义吗?还是我走错了方向?

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

location ~ ^(/[^/]+) {
    try_files $uri $uri/ $1/index.php?$args;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(/[^/]+) $1/index.php last;
}
或者将命名位置与一个或多个
rewrite
语句一起使用,例如:

location ~ ^(/[^/]+) {
    try_files $uri $uri/ $1/index.php?$args;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(/[^/]+) $1/index.php last;
}
您可以使用正则表达式
location
捕获URI的第一部分,例如:

location ~ ^(/[^/]+) {
    try_files $uri $uri/ $1/index.php?$args;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(/[^/]+) $1/index.php last;
}
或者将命名位置与一个或多个
rewrite
语句一起使用,例如:

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

当我将这些行添加到我的nginx.conf时,它会导致浏览器下载index.php文件而不显示页面。是什么原因造成的?我猜您使用的是第一个解决方案,即正则表达式位置。正则表达式位置是按顺序计算的,因此规则需要放在
位置~\.php$
块下面。是!我刚刚自己发现了这一点,当我看到你的回应时,我来到这里发表评论。非常感谢您的帮助。当我将这些行添加到我的nginx.conf时,它会导致浏览器下载index.php文件而不显示页面。是什么原因造成的?我猜您使用的是第一个解决方案,即正则表达式位置。正则表达式位置是按顺序计算的,因此规则需要放在
位置~\.php$
块下面。是!我刚刚自己发现了这一点,当我看到你的回应时,我来到这里发表评论。非常感谢你的帮助。