我们的 Nginx 配置中有以下神奇之处:
location /uploads {
alias /mnt/macchina;
location ~ ^/uploads/ {
try_files $uri @rewrite;
}
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
它有效,但对我来说看起来不像诗歌,所以我想可能有一种更简单的方法。
目标是对于/uploads/
Nginx 来说应该将其视为root
和/mnt/macchina
attry_files
或$uri
goto @rewrite
where 它仍然应该将其root
视为/mnt/macchina
。
有没有更好的办法?
答案1
简化它需要修改 PHP Web 应用程序,使其更加智能地确定所请求的 URL。
虽然大多数 PHP Web 应用程序只是从路径信息中获取此信息,但您的应用程序显然没有这样做,并且要求将请求路径传递到参数中。以这种方式编写重写的原因是从路径中q
剥离前导。/
使用正确编写的 PHP 应用程序从路径信息中获取 URL,您可以完全摆脱重写,只需使用try_files $uri /index.php;
。与应用程序开发人员交谈。