Configurazione del File .htaccess
Il file .htaccess è un file di configurazione che permette di modificare il comportamento di un server web Apache per una specifica directory. Può essere usato per vari scopi come la gestione delle URL, la sicurezza, la gestione della cache e molto altro.
1. Cos’è il file .htaccess?
Il file .htaccess è un file di testo che puoi inserire nelle directory del tuo sito web. Ogni directory può avere un proprio .htaccess che influenzerà solo quella cartella e le sue sottocartelle. Il fatto che ci sia un . davanti al nome significa che il file è usualmente nascosto.
2. Dove si trova il file .htaccess?
Il file .htaccess di solito si trova nella directory principale del sito web (dove è presente anche il file index.html o index.php). Se non è presente, puoi crearlo facilmente utilizzando un editor di testo come Notepad o VSCode.
3. Come funziona?
Il server Apache legge il file .htaccess ogni volta che viene richiesto un file in una directory. Le direttive all’interno di questo file sovrascrivono le impostazioni globali del server per quella specifica directory, rendendo il .htaccess uno strumento potente ma anche delicato.
Passo Passo: Come Configurare un File .htaccess
1. Abilitare la Riscrittura delle URL (mod_rewrite)
La riscrittura delle URL è una delle funzionalità più utilizzate nel file .htaccess. Permette di creare URL più pulite, user-friendly e SEO-friendly.
Esempio: Riscrittura per URL più facili da leggere
RewriteEngine On
RewriteRule ^pagina/([a-zA-Z0-9-]+)$ /pagina.php?slug=$1 [L]
Cosa fa?
- Attiva la riscrittura delle URL con 
RewriteEngine On. - Modifica gli URL come 
/pagina/qualcosainpagina.php?slug=qualcosa. 
2. Impostare una Redirezione Permanente (301)
Se cambi la posizione di una pagina o se stai migrando il tuo sito, è importante usare la redirezione 301 per dire ai motori di ricerca che una pagina è stata spostata permanentemente.
Esempio: Redirezione di una pagina
Redirect 301 /vecchia-pagina.html /nuova-pagina.html
Cosa fa?
- Redirige permanentemente gli utenti da 
vecchia-pagina.htmlanuova-pagina.html. 
3. Bloccare l’Accesso a Determinati IP
Se vuoi bloccare determinati IP da accedere al tuo sito, puoi farlo facilmente con .htaccess.
Esempio: Bloccare un singolo IP
Order Deny,Allow
Deny from 192.168.1.1
Allow from all
Cosa fa?
- Blocca l’accesso da parte dell’IP 
192.168.1.1. 
4. Proteggere una Cartella con Password
Puoi proteggere l’accesso a una directory con una password, utile per aree riservate o pagine di amministrazione.
Esempio: Proteggere la cartella “admin”
- Crea un file chiamato 
.htpasswdin un percorso sicuro. - Aggiungi queste righe nel tuo 
.htaccess: 
<Directory "/path/to/admin">
  AuthType Basic
  AuthName "Zona Protetta"
  AuthUserFile /path/to/.htpasswd
  Require valid-user
</Directory>
Cosa fa?
- Impone una protezione con password sulla cartella 
/admin, utilizzando le credenziali nel file.htpasswd. 
5. Impedire l’Accesso ai File di Configurazione
Puoi evitare che utenti malintenzionati leggano i file sensibili del sito, come il .htaccess stesso.
Esempio: Bloccare l’accesso a .htaccess
<Files ".htaccess">
  Order Allow,Deny
  Deny from all
</Files>
Cosa fa?
- Impedisce a chiunque di visualizzare il contenuto del file 
.htaccesstramite il browser. 
6. Rimuovere i File di Estensione dalla URL
Se desideri che gli utenti non vedano l’estensione .php o .html nelle URL, puoi configurarlo nel .htaccess.
Esempio: Rimuovere l’estensione .php
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ $1.php [L]
Cosa fa?
- Fa sì che le URL come 
paginadiventinopagina.phpsenza che l’estensione sia visibile. 
7. Definire una Pagina di Errore Personalizzata
Puoi creare delle pagine di errore personalizzate per migliorare l’esperienza utente quando una pagina non esiste o si verifica un errore sul server.
Esempio: Personalizzare la pagina 404
ErrorDocument 404 /pagina-errore.html
Cosa fa?
- Quando si verifica un errore 404, il server redirige gli utenti a 
pagina-errore.html. 
Esempi Pratici di Configurazione .htaccess
- Impedire la navigazione nella directory:
Options -Indexes - Reindirizzare gli utenti da HTTP a HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - Abilitare la compressione Gzip per migliorare le prestazioni:
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/javascript - Forzare il download di determinati file (es. PDF):
<FilesMatch "\.(pdf)$">
Header set Content-Disposition "attachment"
</FilesMatch> - Limitare le dimensioni dei file caricati:
LimitRequestBody 1048576 - Bloccare l’accesso a determinati user-agent (es. bot):
SetEnvIf User-Agent "BadBot" BlockBadBot
Deny from env=BlockBadBot - Aggiungere un header per la sicurezza (HSTS):
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" - Forzare una URL a usare il www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] - Disabilitare il caching per alcuni file (ad esempio html e htm):
<FilesMatch "\.(html|htm)$">
ExpiresActive Off
</FilesMatch> - Forzare il charset UTF-8 (ad esempio per risolvere lettere accentate non visualizzate correttamente):
AddDefaultCharset UTF-8 
Eccoti i primi 10 esempi. Se vuoi, posso continuare con altri 40! Questi esempi coprono molte delle configurazioni più comuni, dal miglioramento delle prestazioni, alla sicurezza, alla gestione della navigazione.
