Informazioni e usi del file .htaccess

Informazioni e usi del file .htaccess

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:
 
RewriteEngine On
RewriteRule ^(.*)$ http://www.webaredirigir.com/$1 [R=301,L]
 
(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.
  • Consentire l’accesso al sito solo a determinati IP:
 
ErrorDocument 403 http://www.example.org
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.
 
  • Negare l’accesso al sito solo a determinati IP:
 
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:
  • Vietare o disabilitare completamente l’accesso a una cartella:
 
#deny all access
Require all denied
 
  • Consentire l’accesso da un IP specifico:
 
#deny all access
Require all denied
Require ip 212.267.98.14
 
  • Consentire l’accesso a un intervallo specifico di IP (tramite maschera di rete):
 
Require ip 192.168.0.0/24
 
  • Bloccare l’accesso a un file specifico:
 
Require all denied
 
Elenco delle cartelle
Puoi anche utilizzare il file .htaccess per mostrare il contenuto di una cartella nella struttura delle directory.
 
Options +Indexes
 
  • Elenco delle cartelle senza mostrare le icone predefinite:
 
Options +Indexes
IndexOptions -FancyIndexing
 
  • Evitare la visualizzazione dell’elenco delle cartelle:
 
IndexIgnore*
 
Reindirizzare richieste con www.example.org a example.org e viceversa
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:
 
Redirect 301 /d/nombredelarchivo.html http://www.example.org
 
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]
 
Evitare l’hotlinking
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
 
Creare URL amichevoli
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:
Se il tuo sito utilizza una URL come “http://www.example.org/index.php?parametro=blog”, puoi convertirla in “http://www.example.org/blog”.

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]
 

Per maggiori informazioni, puoi contattarci.
    • Related Articles

    • .htaccess predefinito da PrestaShop

      Il file .htaccess è un file di configurazione utilizzato nei server web basati su Apache. Viene utilizzato per controllare e configurare il comportamento di un sito web. Il file .htaccess ha molteplici funzioni e consente di personalizzare in modo ...
    • Come proteggere le cartelle utilizzando un .htaccess

      Attraverso il file .htaccess puoi proteggere qualsiasi directory del tuo hosting. 1.- Come creare e dove posizionare un file .htaccess e .htpasswd Per creare un file .htaccess o .htpasswd, apri il blocco note e inserisci il codice necessario. Salva ...
    • Informazioni e cause: Error_Connection_Reset

      L'errore "connection reset" è un messaggio di errore che appare nel browser quando tenti di accedere a una pagina web e la connessione viene interrotta in modo inaspettato prima che il caricamento della pagina sia completato. Questo messaggio di ...
    • Come fare una copia del web compresso e come scaricarlo

      Dal pannello di controllo puoi eseguire una compressione completa del tuo sito web per poterlo scaricare successivamente oppure per conservarlo come copia di sicurezza di un giorno specifico. Per farlo, devi accedere al tuo pannello di controllo e ...
    • Che cosa è e perché appare "open_basedir restrizione in vigore. Il file non è all'interno dei percorsi consentiti"

      Quando programmi in PHP su un server web, normalmente esegui numerosi include o require verso altri file del tuo sito. Può essere perché hai bisogno di una classe o di determinate funzioni che, per comodità e per mantenere il codice ordinato, si ...