Wordpress Nginx location指令中子目录的正则表达式或通配符
我有开发人员,他们将在本地机器上编辑多个Wordpress站点。我想为他们设置一次Nginx,而不需要他们在将来编辑配置文件。通常,当Nginx配置为承载Wordpress时,会包含这样的位置块: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
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$
块下面。是!我刚刚自己发现了这一点,当我看到你的回应时,我来到这里发表评论。非常感谢你的帮助。