web analytics

[Guida] Apache: URL redirecting senza che l’utente se ne accorga

Grazie a mod_rewrite!

redirect

Supponiamo di utilizzare un web server Apache e di aver recentemente rinominato la pagina principale del sito da foo.html in bar.html. Per implementare una forma di retrocompatibilità con il vecchio indirizzo, senza far notare agli utenti che le pagine sono state rinominate, possiamo utilizzare mod_rewrite. In questa mini guida, quindi, vi mostrerò come implementare in Apache il modulo rewrite, che consente il reindirizzamento verso un nuovo URL, senza che l’indirizzo cambi nel browser degli utenti, ai quali sembrerà di visitare sempre il vecchio URL. La guida si basa su Ubuntu 20.04.

Apache mod_rewrite

Come primo step aggiornate il sistema ed installate il web server, ove non presente:

apt-get update
apt-get upgrade
apt-get install apache2

apache webserver redirect

Procedete avviando il servizio con il comando systemctl start apache2. Per capire come funziona quest’ultima istruzione, vi rimando alla guida apposita che abbiamo pubblicato tempo fa qui su LFFL. Una volta configurato il sistema, vi sarà possibile abilitare la mod che è già preinstallata, di default, in apache. L’istruzione da utilizzare in tal caso sarà sudo a2enmod rewrite. Dopo questa direttiva procedete al riavvio del servizio con systemctl restart apache2.

web server apache
Per quanto riguarda le regole di riscrittura, avete due soluzioni. Scriverle direttamente nel file di configurazione principale di Apache, oppure, ed è la scelta consigliata, utilizzare un file .htaccess all’interno di ogni sito web. Per impostazione predefinita, Apache non consente di utilizzare tale file. Quindi dovrete prima abilitarlo:

sudo nano /etc/apache2/sites-available/000-default.conf
#### codice da aggiungere al file aperto in nano ####

        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
apache homepage web server
Sito web elementare da utilizzare come test.

Riavviate nuovamente il servizio con systemctl restart apache2. Recatevi nella directory contenente il vostro sito web, ad esempio nano /var/www/html/ e create il file .htaccess contenente la seguente regola:

RewriteEngine on
RewriteRule ^home$ home.html [NC]   #NC sta per case insensitive

in cui home.html è il file effettivo a cui reindirizzare gli utenti che visitano, in questo esempio, localhost/home.

Dubbi? Domande? Per maggiori informazioni sul funzionamento di mod_rewrite, vi rimando alla documentazione ufficiale.

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.