Apache Redirect · 2 min read · Nov 26, 2025
Apache2: Come reindirizzare gli utenti al sito web mobile o normale in base al dispositivo utilizzando mod_rewrite

Dal massiccio aumento degli smartphone e dei tablet come l’iPhone, l’iPad, i telefoni e tablet Android, BlackBerry, ecc., potresti aver considerato di creare una versione mobile del tuo sito web. Questo tutorial spiega come configurare Apache per servire la versione mobile del tuo sito web se il visitatore utilizza un dispositivo mobile e la versione normale se il visitatore utilizza un PC desktop standard. Questo può essere realizzato con il modulo di riscrittura di Apache.
1 Nota preliminare
In questo tutorial, il mio sito web “normale” è accessibile all’indirizzo http://www.example.com e http://example.com, mentre il mio sito mobile si chiama http://m.example.com. Questi vhosts esistono già sul mio sistema, quindi non tratterò come configurarli.
2 Abilitare mod_rewrite
Prima di tutto, devi assicurarti che il modulo Apache mod_rewrite sia abilitato. Questo modulo ti consente di effettuare un reindirizzamento httpd, una redirezione apache e una riscrittura URL apache tramite un server web apache. Su Debian/Ubuntu, puoi abilitarlo in questo modo:
a2enmod rewriteRiavvia Apache successivamente - per Debian/Ubuntu, il comando è:
/etc/init.d/apache2 restart3 Configurare Apache per consentire le regole di riscrittura nei file .htaccess
Il mio sito web “normale” www.example.com / example.com ha il file di configurazione vhost /etc/apache2/sites-available/www.example.com.vhost e la root del documento /var/www/www.example.com/web.
Il mio sito mobile m.example.com ha il file di configurazione vhost /etc/apache2/sites-available/m.example.com.vhost e la root del documento /var/www/www.example.com/mobile.
Voglio inserire le regole di riscrittura per ciascun sito in un file .htaccess (anche se è possibile inserirle direttamente nel file di configurazione vhost) che venga letto dal server http apache. Pertanto, devo prima modificare le nostre configurazioni vhost in modo che entrambi i file .htaccess possano contenere direttive di riscrittura. Possiamo farlo con la riga AllowOverride All (che consente a .htaccess di sovrascrivere tutte le impostazioni nella configurazione vhost, la configurazione del server):
vi /etc/apache2/sites-available/www.example.com.vhost[...]
AllowOverride All
[...]vi /etc/apache2/sites-available/m.example.com.vhost[...]
AllowOverride All
[...]Riavvia Apache successivamente:
/etc/init.d/apache2 restart4 Creare regole di riscrittura
Ora creiamo le regole di riscrittura per il sito web “normale” www.example.com / example.com che reindirizzeranno tutti gli utenti di dispositivi mobili alla versione mobile m.example.com - mi concentro qui sui dispositivi/user agent rilevanti, che sono Android, Blackberry, Googlebot-mobile (il bot di ricerca mobile di Google), IE Mobile, iPad, iPhone, iPod, Opera Mobile, PalmOS e WebOS.
Il file /var/www/www.example.com/web/.htaccess appare come segue:
vi /var/www/www.example.com/web/.htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.example.com/ [L,R=302]
Per il nostro sito web mobile m.example.com, le regole di riscrittura che reindirizzano tutti gli utenti che non utilizzano un dispositivo mobile al nostro sito web “normale” www.example.com / example.com appaiono come segue - ho negato la condizione RewriteCond dal precedente file .htaccess:
vi /var/www/www.example.com/mobile/.htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^$ http://www.example.com/ [L,R=302]
Questo è tutto, abbiamo impostato la nostra direttiva di reindirizzamento! Ora puoi fare qualche test, ad esempio visitare m.example.com con un browser desktop standard:
Se tutto va bene, dovresti essere reindirizzato a www.example.com:

Ora prova con un dispositivo mobile (qui uso un telefono Android) e vai su www.example.com:

Dovresti essere reindirizzato a m.example.com:

5 Link
- Apache: http://httpd.apache.org/
- Modulo Apache mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.