我已经建立了一个带有 Wordpress 的 Ubuntu 20.04 LEMP 服务器,并使用了一些教程来帮助我配置 Nginx。到目前为止,我一切都运行正常,但在多个 Ubuntu 中LEMP 服务器 + Wordpress“教程中,我注意到一个不一致在 Nginx 位置块指令中,想要解释一下每个 Nginx 位置指令之间的区别:
在1) Linuxbabe 的 LEMP Wordpress 教程他指示在我的 Nginx 虚拟主机中使用以下位置指令:
location / {
try_files $uri $uri/ /index.php;
}
这打破了事情(按钮实际上不会注销/清空购物车)与我的 Woo Commerce“帐户注销”按钮以及我的 Woo Commerce“清空购物车”按钮有关,所以这对我来说不是一个解决方案。
在2) 这个 Devpress LEMP Wordpress 教程他指示在我的 Nginx 虚拟主机中使用以下位置指令:
location / {
try_files $uri $uri/ /index.php?$args;
}
此固定我的 Woo Commerce“注销”和“清空购物车”按钮,并使它们真正发挥作用并完成它们应该做的事情。
在3) 这个 Digitalocean LEMP Wordpress 教程他指示在我的 Nginx 虚拟主机中使用以下位置指令:
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
这也修复了我的 Woo Commerce“注销”和“清空购物车”按钮,并使它们真正发挥作用并完成它们应该做的事情。
所以我的问题是,
location / {
try_files $uri $uri/ /index.php;
}
和
location / {
try_files $uri $uri/ /index.php?$args;
}
和
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
当将 Wordpress 与 Woo Commerce 结合使用时,Nginx 中的位置指令?
您能否详细说明一下,为什么其中一个会破坏 Wordpress,而另外两个会修复它?我实际上应该使用哪一个?
答案1
不同之处在于所使用的变量,所以让我们看看它们的文档。
?
如果请求行有参数,则为空字符串,否则
请求行中的参数
$args
不包含分隔符?
,因此在这种情况下正确的配置是:
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
那么,为什么$is_args
不简单地包含在中呢$args
?它在您想要添加参数的配置中很有用,例如,
try_files $uri $uri/ /index.php?lang=$geoip_country_code&$args;
在那里,添加一个参数?
将是一个错误。在字符串末尾添加参数也不是一种选择,因为?&
如果没有其他参数,那么就会有一个空的参数。