Guida alla configurazione del file htaccess

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/qualcosa in pagina.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.html a nuova-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”

  1. Crea un file chiamato .htpasswd in un percorso sicuro.
  2. 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 .htaccess tramite 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 pagina diventino pagina.php senza 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

  1. Impedire la navigazione nella directory:
    Options -Indexes

  2. Reindirizzare gli utenti da HTTP a HTTPS:
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

  3. Abilitare la compressione Gzip per migliorare le prestazioni:
    AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/javascript

  4. Forzare il download di determinati file (es. PDF):
    <FilesMatch "\.(pdf)$">
    Header set Content-Disposition "attachment"
    </FilesMatch>

  5. Limitare le dimensioni dei file caricati:
    LimitRequestBody 1048576

  6. Bloccare l’accesso a determinati user-agent (es. bot):
    SetEnvIf User-Agent "BadBot" BlockBadBot
    Deny from env=BlockBadBot

  7. Aggiungere un header per la sicurezza (HSTS):
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

  8. Forzare una URL a usare il www:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

  9. Disabilitare il caching per alcuni file (ad esempio html e htm):
    <FilesMatch "\.(html|htm)$">
    ExpiresActive Off
    </FilesMatch>

  10. 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.