如何在 nginx 中获取变量的首字母
例子
server_name ~^(?<subdomain>\w+)\.development\.test$;
location / {
root /var/www/test/$subdomain.0/$subdomain;
try_files $uri $uri/ =404;
}
因此
http://apple.development.test/
按照这个路径 就可以了/var/www/test/a/apple
我见过使用 map 的方法,但不确定如何正确地做到这一点
答案1
以下方法可能也有效:
server_name ~^(?<subdomain>(?<firstletter>\w)\w+)\.development\.test$;
location / {
root /var/www/test/$firstletter/$subdomain;
try_files $uri $uri/ =404;
}
答案2
您可以使用 map 模块创建一个具有首字母的新变量: http://nginx.org/en/docs/http/ngx_http_map_module.html#map
例子:
map $subdomain $firstletter {
default "";
"~^(?<letter>.{1}).*$" $letter;
}
编辑:命名捕获组的正确 PCRE 语法是(?<name>regexp)