Как выполнять запросы динамической маршрутизации пути к единственному корневому каталогу и URL-адрес для /<country_zone>/<actual_url>/*
.
Я могу извлечь $country_zone
значение, которое может быть любым из (in|uk|us|other)
с помощью модуля geoip.
например
Request => Response
/ => /
/ (with geoip country as US) => /us/
/path/ => /path
/path/ (with geoip country as US) => /us/path/
/us/path/ => /us/path/
/us/path/ (with geoip country as US) => /us/path/
/in/* => /*
Моя кодовая база находится по адресу: / var / www / html (Все маршруты должны рассматривать это как корневой каталог после /
Моя текущая конфигурация nginx:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location ~ ^/$country_zone {
alias /var/www/html;
index index.html index.htm index.nginx-debian.html;
break;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
if ($country_zone != in) {
return 307 /$country_zone;
}
add_header X_COUNTRY_ZONE_ID $country_zone;
try_files $uri $uri/ =404;
}
}
PS: Я также когда-нибудь проксирую запрос на другой сервер
Ваше решение мне кажется вполне приемлемым. Честно говоря, я понятия не имею, что там не так.
Я бы предпочел закодировать приложение, чтобы распознавать язык по умолчанию в браузерах пользователей и отображать веб-сайт или маршрутизировать их в соответствии с этим. По крайней мере, так мы и сделали. URL-адрес всегда один и тот же, за исключением того, что сразу после основного доменного имени вы можете определить код страны, как вы ожидаете.