gpt4 book ai didi

nginx conf/带有多个映射)到相同的变量

转载 作者:行者123 更新时间:2023-12-02 11:24:35 25 4
gpt4 key购买 nike

我们有一个多站点设置,需要将域和域/子文件夹映射到一个变量。这样编程就知道要加载哪个版本。

我们的商店有单独的域,可以被 $http_host 捕获。还有 domain.com/-string-locale-here- 并且被 $http_host$uri 捕获和匹配命令

不知何故,下面不起作用。这可能是因为有两个 map 命令,都映射到同一个变量 $storecode
或者可能出了什么问题?

map $http_host $storecode {
default dom_nl;
domain.com dom_nl;
domain.de dom_de;
store.com str_de;
}

map $http_host$uri $storecode {
~^store.com/en.* str_en;
~^store.com/fr.* str_fr;
}

最佳答案

default未在 map 块中指定,默认结果值将为空字符串。因此,就您而言,无论值 $storecode在第一个映射块中设置为,在第二个映射块中被替换为空字符串。

由于 map 变量在使用时被评估,因此您不能设置 $storecode作为第二个 map 块中的默认值,因为这会导致无限循环。

所以解决办法是在第一个map块中引入一个临时变量,然后在第二个块中作为默认值使用:

map $host $default_storecode {
default dom_nl;
domain.com dom_nl;
domain.de dom_de;
store.com str_de;
}

map $host$uri $storecode {
default $default_storecode;

~^store.com/en.* str_en;
~^store.com/fr.* str_fr;
}

或者,您可以将这两个 map 块合并为一个:
map $host$uri $storecode {
default dom_nl;

~^domain.com.* dom_nl;
~^domain.de.* dom_de;

~^store.com/en.* str_en;
~^store.com/fr.* str_fr;
~^store.com.* str_de;
}

关于nginx conf/带有多个映射)到相同的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com