1.- Che cos’è un .htaccess?
Il file .htaccess (hypertext access) è il nome predefinito del file di configurazione delle directory di Apache. Viene utilizzato per personalizzare la configurazione di direttive e parametri definiti nel file di configurazione principale dell’hosting.
2.- Come creiamo e dove posizioniamo un file .htaccess?
Per creare un file .htaccess, apri il Blocco note e inserisci il codice necessario. Salva il file come file di testo (.txt), ad esempio “fichero_htaccess.txt”, e
caricalo tramite FTP nella cartella in cui deve essere utilizzato. Una volta sul server, modifica il nome del file da “fichero_htaccess.txt” a “.htaccess”.
Importante: se disponi già di un file .htaccess all’interno del tuo hosting, puoi utilizzarlo per effettuare queste configurazioni. Se hai effettuato recentemente una
migrazione di dominio, potrebbe essere necessario apportare anche alcune modifiche.
Il file .htaccess deve essere posizionato all’interno della cartella in cui vuoi che abbia effetto. Ad esempio, se desideri proteggere con password una cartella chiamata “privado”, inserisci il file .htaccess all’interno della cartella “privado”.
Il file .htaccess ha una grande varietà di usi e funzionalità che possono risultare molto utili sul web. Nel seguente tutorial mostriamo alcune delle funzioni più utilizzate.
3.- Utilità comuni del .htaccess
Il file .htaccess offre numerose utilità. In questo tutorial ti mostriamo alcune delle più comuni e come configurarle:
Reindirizzare un sottodominio a una sottocartella In alcune situazioni potresti aver bisogno di creare un reindirizzamento verso la cartella di un sottodominio tramite .htaccess. Ad esempio, se vuoi che indicando il sottodominio “test.example.org” venga caricata la cartella “example.org/test”, devi inserire le seguenti direttive nel file .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test.example.com$
RewriteCond %{REQUEST_URI} !^/test/
RewriteRule (.*) /test/$1
La prima riga attiva il motore di riscrittura ed è necessario indicarla solo se non è già stata definita in precedenza.
La terza e la quarta riga effettuano il reindirizzamento.
La seconda riga impedisce che il reindirizzamento venga eseguito nuovamente se la richiesta si trova già nella cartella “test”. Questo è necessario per evitare errori e cicli infiniti, poiché il file .htaccess viene rieseguito quando la richiesta viene reindirizzata alla cartella “test”.
Reindirizzare un sito web tramite reindirizzamenti 301, 302 Se, accedendo al sito web, desideri reindirizzare la pagina verso un’altra destinazione:
(In “R=301” puoi indicare il metodo di reindirizzamento desiderato: 301, 302, ecc.)
Reindirizzare un sito web a una sottocartella Se il tuo sito web si trova in una sottocartella diversa dalla cartella “web”, puoi reindirizzare tutte le richieste verso questa sottocartella:
RewriteEngine on RewriteCond %{HTTP_HOST} ^example.org\.org$ RewriteRule (.*) http://www.example.org/$1 [R=301,L] RewriteRule ^$ cartella [L]
Dove:
example.org\.org potrebbe essere, ad esempio, cdmon.com\.com.
La cartella potrebbe essere, ad esempio, “wordpress”.
Controllo dell’accesso al sito Puoi configurare il sito in modo da negare l’accesso a tutti gli utenti o consentirlo solo a un determinato gruppo di indirizzi IP.
Require all denied
Require ip 124.34.48.165
Require ip 102.54.68.123
Gli IP 124.34.48.165 e 102.54.68.123 sono gli indirizzi che avranno accesso al sito web.
Require all granted
Require not ip 145.186.14.122
Require not ip 124.15
L’indirizzo IP 145.186.14.122 e la rete 124.15.x.x non avranno accesso al sito.
Controllo dell’accesso alle cartelle Un utilizzo molto comune del file .htaccess è impedire l’accesso a determinate cartelle. Ad esempio, potresti voler disabilitare completamente l’accesso a una cartella contenente librerie di programmazione utilizzate dagli script principali. In questo caso, i file principali potranno accedervi tramite il file system, ma non sarà possibile accedervi via web. È sufficiente creare un file .htaccess all’interno della cartella con il seguente codice:
#deny all access
Require all denied
#deny all access
Require all denied
Require ip 212.267.98.14
Require ip 192.168.0.0/24
Require all denied
Puoi anche utilizzare il file .htaccess per mostrare il contenuto di una cartella nella struttura delle directory.
Options +Indexes
Options +Indexes
IndexOptions -FancyIndexing
IndexIgnore*
Se desideri che il sito venga sempre visualizzato senza www, aggiungi il seguente codice nel file .htaccess:
RewriteEngine On RewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$ RewriteCond %{HTTP_HOST} !^example\.org$ [NC] RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]
Al contrario, per visualizzare sempre il sito con www:
RewriteEngine On RewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$ RewriteCond %{HTTP_HOST} !^www\.example\.org$ [NC] RewriteRule ^(.*)$ http://www.example.org/$1 [R=301,L]
Dove:
example.org potrebbe essere, ad esempio, cdmon.com
Reindirizzamento SEO-friendly Se hai trasferito nomi di dominio o desideri reindirizzare verso una pagina specifica senza influire sui risultati dei motori di ricerca come Google, puoi utilizzare il seguente codice:
Reindirizzare il traffico web Se desideri che l’accesso a un file specifico venga reindirizzato verso un altro file, puoi utilizzare la direttiva “redirect”:
Reindirizzare verso una connessione sicura HTTPS Se desideri reindirizzare l’intero sito verso una connessione sicura (HTTPS), ad esempio quando disponi di un certificato SSL, puoi utilizzare il seguente codice:
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Forzare l’uso di HTTPS per una cartella specifica Se desideri reindirizzare verso HTTPS solo una cartella specifica invece dell’intero sito, ad esempio una cartella che contiene un negozio online, utilizza il seguente codice:
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} nome_della_cartella RewriteRule ^(.*)$ https://www.example.org/$1 [R,L]
L’hotlinking consiste nel creare collegamenti diretti a file (generalmente immagini o video) appartenenti a un altro sito web. Questa pratica consuma la banda del sito originale. Per evitare il furto di banda, puoi configurare il file .htaccess per bloccare l’hotlinking.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.org/.*$ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
L’ultima riga serve per indicare il tipo di contenuto (in base alle estensioni dei file) che non desideri venga collegato:
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
In alternativa, puoi utilizzare questa regola che, oltre a bloccare l’accesso, mostra un’immagine di avviso (“no_robar_ancho_de_banda.gif”, che devi creare in precedenza):
RewriteEngine on RewriteCond %{REQUEST_URI} !^/IMG/no_robar_ancho_de_banda.gif$ RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.org/.*$ [NC] RewriteRule .*(gif|jpe?g|png|bmp)$ http://example.org/IMG/no_robar_ancho_de_banda.gif [NC,R,L]
Nell’ultima riga indica le estensioni dei file che desideri bloccare e l’immagine di avviso da visualizzare.
Cambiare la pagina predefinita Puoi impostare una pagina iniziale diversa dalla classica “index”. In questo esempio viene impostata “about.html” come pagina iniziale:
#Serve Alternate Default Index Page
DirectoryIndex about.html
Forzare la cache del sito Il seguente codice non aumenta direttamente la velocità di caricamento generale del sito, ma consente un caricamento più rapido per gli utenti che lo visitano nuovamente, inviando uno stato 304 quando gli elementi non sono stati modificati. Puoi modificare la frequenza della cache cambiando il numero di secondi (in questo esempio una volta al giorno):
FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"
Migliorare la compatibilità dei caratteri Questa opzione è utile per chi non utilizza un set di caratteri standard riconosciuto dal server e permette di evitare il noto errore 500.
AddDefaultCharset utf-8
Una URL amichevole consiste nel trasformare una URL piena di parametri in una forma più elegante e facilmente leggibile, migliorando anche il posizionamento nei motori di ricerca. A seconda di come è programmato il sito web, il codice da utilizzare può variare.
Esempio 1:
Ad esempio, “cartella/file.php?id=120&lingua=es” è una URL non amichevole, che può essere trasformata in “cartella/file/120/es”. Con il file .htaccess puoi effettuare questa trasformazione.
Supponiamo di avere una cartella con un file che riceve parametri:
example.org/cartella/file.php?id=25
All’interno di questa cartella devi creare un file .htaccess con il seguente codice:
Options +FollowSymLinks
RewriteEngine on
RewriteRule cartella/(.*)/(.*).php$ /cartella/file.php?id=$1
Nell’ultima riga viene effettuata la trasformazione.
(.*) rappresenta il parametro che verrà passato come $1.
(.*).php$ rappresenta il nome del file per “decorare” la URL.
Una volta creato il file .htaccess, il link del sito dovrà essere:
Link al file 25
Pertanto, “cartella/25/nome-del-file.php” sarà equivalente a “/cartella/file.php?id=25”.
Esempio 2:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /index.php?parametro=$1 [QSA,L]
Esempio 3:
Altro esempio di conversione in URL amichevoli.
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/pagina-([0-9]+)$ /index.php?parametro=$1&paginatore=$1 [QSA,L]
Esempio 4:
Codice utilizzato da WordPress per creare URL amichevoli.
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]