获取子域名的首字母作为变量

获取子域名的首字母作为变量

如何在 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)

相关内容