# ============================================================= # device-redirect.conf # # Reindirizza automaticamente l'utente alla build corretta # (desktop / android / ios) in base allo User-Agent. # # Struttura attesa sul server, sotto la root del sito: # /var/www/tuosito/desktop/ # /var/www/tuosito/android/ # /var/www/tuosito/ios/ # # COME USARLO # 1. Copia il blocco "map" fuori dal blocco server, a livello # "http" (di solito in un file separato dentro # /etc/nginx/conf.d/ oppure in cima a nginx.conf, cosi' # viene incluso automaticamente da tutti i server block). # 2. Copia il blocco "server" (o solo le location, se hai gia' # un server block) dentro la configurazione del tuo sito. # 3. Adatta "server_name" e "root" ai tuoi valori reali. # 4. Ricarica nginx: sudo nginx -t && sudo systemctl reload nginx # ============================================================= # --- 1. Rilevamento dispositivo dallo User-Agent ------------- # nginx valuta le regex nell'ordine in cui compaiono e usa la # prima che corrisponde: per questo iOS/Android vanno PRIMA di # "default". map $http_user_agent $device_path { default "/desktop/"; "~*(android)" "/android/"; "~*(iphone|ipad|ipod)" "/ios/"; } server { listen 80; # listen 443 ssl; # se usi https, aggiungi qui i certificati server_name tuosito.com www.tuosito.com; root /var/www/tuosito; index index.html; # --- 2. Redirect solo sulla home, non su tutte le pagine -- # Cosi' se un utente e' gia' dentro /desktop/qualcosa non # viene rimbalzato di nuovo. location = / { # 302 = redirect temporaneo: se in futuro cambi logica # o l'utente cambia dispositivo, il browser ricontrolla # ogni volta invece di tenere il redirect in cache. add_header Cache-Control "no-store"; return 302 $device_path; } # --- 3. Le tre build vere e proprie ----------------------- location /desktop/ { try_files $uri $uri/ /desktop/index.html; } location /android/ { try_files $uri $uri/ /android/index.html; } location /ios/ { try_files $uri $uri/ /ios/index.html; } } # ============================================================= # TEST RAPIDO (dal terminale, sostituendo tuosito.com): # # curl -sI -A "Mozilla/5.0 (Linux; Android 10)" http://tuosito.com/ | grep -i location # -> dovrebbe rispondere: Location: /android/ # # curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0)" http://tuosito.com/ | grep -i location # -> dovrebbe rispondere: Location: /ios/ # # curl -sI -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" http://tuosito.com/ | grep -i location # -> dovrebbe rispondere: Location: /desktop/ # =============================================================