首先,我想声明我对 nginx 比较陌生,我基本上只知道我在上周学到的东西。
也就是说,我目前有一个标准配置的 Nginx 服务器:
server {
listen 80;
server_name site.com;
root /var/www/site.com/;
index index.php;
location / {
try_files $uri $uri/ /index.php;
}
location /microsite/first {
try_files $uri $uri/ /microsite/first/;
}
location /microsite/second {
try_files $uri $uri/ /microsite/second/;
}
...
}
这工作正常,尽管对于我添加到现有站点的每个微型站点,它需要添加一个新的位置,指的是新微型站点的路径。
我的问题是:是否可以动态设置
location
参数以捕获和引用 中存在的任何子目录的方式微型网站/目录?例如符合重写规则的东西
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
(取自 nginx 站点)但适用于 location
参数,如:location ~ ^/microsite/(.*)$ {
try_files $uri $uri/ /microsite/$1/;
}
其中
$1
将捕获在 (.*)
中传递的子目录名称?(我尝试了我引用(另一个)Nginx dynamic location configuration 问题的答案构建的这个片段,尽管它不起作用)
另外,我不是正则表达式专家,过去我对它进行了一些调整,但那是不久前的事情了,我不记得确切的术语了,所以这可能是问题的一部分,也许?!
无论如何,感谢所有帮助。
提前致谢!!
最佳答案
您可能需要将捕获限制为前两个路径段:
location ~ ^(/microsite/[^/]+) {
try_files $uri $uri/ $1/;
}
[^/]
字符类匹配任何不是 /
的东西
关于Nginx 动态位置路径配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065397/