Nginx - przekierowanie w zależności od geolokalizacji

Pytania i problemy
Szymoon202
Szymoon202

Cześć, jak w nginxie i czy w ogóle się da przekierować kogoś na dany katalog w zależności od geolokalizacji? Mam stronę np. po polsku i po angielsku, chciałbym więc żeby Nginx przekierowywał osoby z polski na uri /pl/ a osoby spoza polski na uri /en/ (oczywiście to przykład). Znalazłem coś w Google na jakimś forum ale to jedynie pozwalało na jedno przekierowanie (przykładowo gdy mamy dwa języki) a jeżeli mam stronę w 3 językach to już nie bardzo. Ktoś coś wie? A może coś z htaccess?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Szymoon202:

A może coś z htaccess?

Nginx nie wspiera htaccess.

Szymoon202:

Znalazłem coś w Google na jakimś forum ale to jedynie pozwalało na jedno przekierowanie (przykładowo gdy mamy dwa języki) a jeżeli mam stronę w 3 językach to już nie bardzo. Ktoś coś wie?

Jeśli podzielisz się dotychczasowo testowanym rozwiązaniem, prawdopodobnie innym będzie łatwiej ci pomóc.

undefined
undefined

Można coś takiego wykonać w skrypcie php który znajduje się w katalogu głównym, skrypt taki sprawdzał by lokalizację po adresie ip i przekierowywał na folder dostępny z bazy, jeśli takowego folderu nie ma przenosi na domyślny folder w tym przypadku może być to Angielski.

Dziękuję dobranoc,

PS: skrypt taki mogę wykonać dzisiaj pod wieczór bo obecnie gdzieś się śpieszę

riko.dev
riko.dev Moderator Freebies

Wymagany moduł: http://nginx.org/en/docs/http/ngx_http_map_module.html

http { 
...
map $geoip_country_code $new_home_uri { 
  default /en/; 
  uk /en/; 
  us /en/; 
  de /de/; 
  ru /ru/; 
} 
...
} 
server { 

.... 

location = / { 
rewrite ^ $new_home_uri break; 
} 

location = /de { 
# default home for german visitors 
... 
} 

location = /ru { 
# sekcja dla użytkowników z rosji...
... 
} 

location = /en { 
# sekcja dla anglików i ameryczki..
... 
} 

}

Oczywiście kropki pomiń — to przykład. 😁

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.