Nginx Geoip重定向子域

时间:2018-11-28 17:25:54

标签: nginx redirect geoip

当用户进入主域https://de.example.com时,我尝试将其从DE重定向到子域https://www.example.com

我尝试了以下操作:

if ($geoip_country_code ~ (DE)) {
return 301 https://de.example.com$request_uri;

if ($host = 'example.com') {
  return 301 https://www.example.com$request_uri;

国家/地区重定向正在运行,但与另一个重定向冲突。 如何将两者结合?

(更新)

当我这样做的时候..

map $geoip_city_country_code $closest_server {
    default www.example.com;
    DE      de.example.com;
}

if ($closest_server != $host) {
    rewrite ^ $scheme://$closest_server$request_uri break;
}

然后一切正常!但非DE仅限www.example.com,并且无法浏览至ar.example.com,he.example.com等,这对Google bot来说是毒药。因此,如果默认有通配符值,那将是完美的选择。

(更新)

好吧

我现在这样尝试: nginx.conf:

map $geoip_city_country_code $allowed_country {
    default 0;
    DE 1;
}

主机文件:

server {
    if ($allowed_country = 1) {
        return 301 $scheme://de.example.com$request_uri;
    }
...

但是如果现在访问默认域,我将重定向到de.example.com,但出现错误:

重定向过多。

  

错误代码:INET_E_REDIRECT_FAILED

0 个答案:

没有答案