単一のルートディレクトリへの動的パスルーティングリクエストと/<country_zone>/<actual_url>/*
へのURLの実行方法。
Geoipモジュールを使用して$country_zone
のいずれかになり得る(in|uk|us|other)
値を取得できます。
例
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:いつか別のサーバーにリクエストをプロキシする予定です
あなたの解決策は私にはかなり大丈夫に見えます。正直なところ、私には何が悪いのか見当がつかない。
むしろ、ユーザーのブラウザーのデフォルト言語を認識してWebサイトを表示するか、それに応じてルーティングするようにアプリケーションをコーディングしたいと思います。少なくともそれは私たちがしたことです。 URLは常に同じですが、メインドメイン名の直後で、予想どおりに国コードを見つけることができます。