Guida a .htaccess: Impostazioni nascoste, reindirizzamenti e sicurezza

Il file .htaccess è un file di configurazione locale che consente di controllare determinate impostazioni del sito web direttamente nella rispettiva directory. Viene utilizzato di frequente negli ambienti di web hosting con cPanel per impostare reindirizzamenti, forzare l'HTTPS, disattivare l'elenco delle directory, limitare gli accessi o definire specifiche regole di sicurezza.

Per molti gestori di siti web, il file .htaccess è uno dei file più importanti nel web hosting, anche se a prima vista può sembrare insignificante. Il nome del file inizia con un punto, motivo per cui nella maggior parte dei gestori di file viene trattato per impostazione predefinita come un file nascosto. Svolge un ruolo fondamentale soprattutto nei sistemi di gestione dei contenuti (CMS) come WordPress, Joomla o altre applicazioni PHP, ad esempio per ottenere URL ottimizzati per i motori di ricerca, reindirizzamenti e protezione degli accessi.

Nota importante sulla sicurezza:
Un file .htaccess errato può rendere il sito web non più raggiungibile e mostrare invece un errore come 500 Internal Server Error. Pertanto, prima di ogni modifica, create una copia di sicurezza del file esistente. Modificate sempre solo poche righe alla volta e testate immediatamente il sito web subito dopo.

Cos'è esattamente il file .htaccess?

Il file .htaccess è un file di configurazione che contiene istruzioni per il server web. Queste istruzioni si applicano solitamente alla directory in cui si trova il file e alle relative sottodirectory. Se, ad esempio, il file si trova nella cartella public_html, può influenzare il comportamento dell'intero sito web.

Le attività tipiche di un file .htaccess sono:

  • Reindirizzamenti da vecchi a nuovi URL
  • Forzatura delle connessioni HTTPS
  • Reindirizzamento da www al dominio senza www o viceversa
  • Protezione contro l'elenco delle directory (directory listing)
  • Blocco di singoli indirizzi IP
  • Protezione di determinati file dall'accesso diretto
  • Definizione di pagine di errore personalizzate
  • Regole tecniche per i sistemi di gestione dei contenuti come WordPress

Il file .htaccess è potente, ma deve essere modificato con cautela. Non tutte le possibili direttive Apache sono consentite in ogni ambiente di hosting. Se una regola non è supportata o contiene errori, può causare un messaggio di errore.

Dove si trova il file .htaccess in cPanel?

Nella maggior parte dei casi, il file .htaccess più importante del vostro sito si trova nella directory principale del sito web. Per un dominio principale, questa è spesso la cartella public_html. Per i domini aggiuntivi, i sottodomini o le applicazioni installate separatamente, il file può trovarsi anche in un'altra directory.

Ecco come trovare il file nel Gestore file di cPanel:

  1. Accedete al vostro account cPanel.
  2. Aprite la sezione Gestore file.
  3. Navigate fino alla cartella del vostro sito web, spesso public_html.
  4. Fate clic su Impostazioni in alto a destra.
  5. Attivate l'opzione Mostra file nascosti (dotfiles).
  6. Fate clic su Save o Salva.
  7. Il file .htaccess dovrebbe ora essere visibile, a condizione che esista già.

Se non è presente alcun file .htaccess, può essere creato ex novo in caso di necessità. Prestate attenzione all'esatto nome del file: .htaccess. Non deve essere aggiunta alcuna estensione come .txt.

Creare sempre un backup prima delle modifiche

Prima di modificare il file, è opportuno creare una copia di sicurezza. Questo è particolarmente importante perché anche un piccolo errore di battitura può bloccare il sito web.

  1. Nel Gestore file di cPanel, selezionate il file .htaccess.
  2. Fate clic su Copia o scaricate il file sul vostro computer.
  3. Salvate la copia, ad esempio, come .htaccess-backup o htaccess-sicurezza.txt.
  4. Solo a questo punto procedete a modificare il file .htaccess attivo.

Se si verifica un errore dopo una modifica, è possibile annullare l'ultimo cambiamento o ripristinare il backup.

Esempi pratici di .htaccess

I seguenti esempi mostrano regole comunemente utilizzate. Non copiate il codice ciecamente nel vostro sito web, ma verificate sempre se esistono già regole simili. L'ordine delle regole è importante, specialmente con WordPress e altri sistemi CMS.

1. Forzare l'HTTPS

Questa regola reindirizza automaticamente i visitatori da http:// a https://. Il prerequisito è che per il dominio sia attivo un certificato SSL valido.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Un reindirizzamento permanente con R=301 segnala ai browser e ai motori di ricerca che la versione HTTPS deve essere utilizzata in modo permanente. Dopo la configurazione, è consigliabile testare diverse sottopagine del sito web.

2. Reindirizzare da www a senza www

Se desiderate che il vostro sito web sia raggiungibile in modo uniforme senza www, potete utilizzare la seguente regola. Sostituite example.ch con il vostro dominio.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.ch$ [NC]
RewriteRule ^(.*)$ https://example.ch/$1 [L,R=301]

Una variante di dominio uniforme è sensata dal punto di vista SEO, in quanto riduce i contenuti duplicati sotto diverse varianti di dominio.

3. Reindirizzare da senza www a www

Se invece desiderate che il vostro sito web venga sempre richiamato con il www, utilizzate questa variante. Anche in questo caso, sostituite example.ch con il vostro dominio.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.ch$ [NC]
RewriteRule ^(.*)$ https://www.example.ch/$1 [L,R=301]

È importante decidere per una sola variante. Non utilizzate contemporaneamente reindirizzamenti contraddittori per www e senza www.

4. Reindirizzare permanentemente una singola pagina

Se l'URL di una pagina è cambiato, potete reindirizzare permanentemente i vecchi indirizzi verso i nuovi. Questo è particolarmente importante per evitare che i visitatori e i motori di ricerca finiscano su una pagina di errore 404.

Redirect 301 /alte-seite.html https://example.ch/neue-seite.html

Questa regola è adatta per semplici reindirizzamenti di singole pagine. Per strutture di URL più complesse, le regole di tipo RewriteRule sono spesso più flessibili.

5. Disattivare l'elenco delle directory

Se in una directory non è presente un file di indice come index.php o index.html, il server potrebbe mostrare un elenco dei file contenuti. Nella maggior parte dei casi, questo non è desiderabile per motivi di sicurezza e riservatezza.

Options -Indexes

Con questa regola si impedisce ai visitatori di vedere il contenuto di una directory come elenco di file.

6. Bloccare un singolo indirizzo IP

Con Apache 2.4, la protezione degli accessi è gestita tramite la direttiva Require. Il seguente esempio blocca uno specifico indirizzo IP. Sostituite 203.0.113.10 con l'indirizzo IP in questione.

<RequireAll>
    Require all granted
    Require not ip 203.0.113.10
</RequireAll>

Il blocco di singoli indirizzi IP può essere utile in caso di accessi anomali o sospetti. Tuttavia, non sostituisce una soluzione di sicurezza completa, poiché gli aggressori possono cambiare indirizzo IP o accedere tramite reti con indirizzi dinamici.

7. Bloccare l'accessibilità ai file sensibili

Certi file non dovrebbero mai essere richiamabili direttamente tramite il browser. Questi possono includere, ad esempio, file di backup, file di configurazione o file di sviluppo.

<FilesMatch "^(\.env|composer\.json|composer\.lock|package\.json)$">
    Require all denied
</FilesMatch>

Questa regola blocca l'accesso diretto ad alcuni tipici file tecnici. La presenza o meno di questi file nella vostra directory web dipende dalla vostra applicazione. In caso di dubbio, i file di configurazione sensibili non dovrebbero affatto risiedere nella directory web accessibile pubblicamente.

8. Definire una pagina di errore personalizzata per l'errore 404

Una pagina di errore personalizzata può aiutare i visitatori quando una pagina non viene trovata. Al posto di un messaggio tecnico standard, potete mostrare una pagina utile con navigazione, ricerca o opzioni di contatto.

ErrorDocument 404 /404.html

Il file 404.html deve esistere nel percorso specificato. In alternativa, può essere utilizzato anche un file PHP, se il vostro sito web lo prevede.

Note importanti for i siti web WordPress

WordPress utilizza spesso il file .htaccess per i cosiddetti permalink, ovvero URL ottimizzati per i motori di ricerca. Il blocco di WordPress si presenta in genere in modo simile a questo esempio:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Modificate il blocco di WordPress solo se sapete esattamente cosa state facendo. Molte regole dovrebbero essere inserite al di sopra o al di sotto di questo blocco. Se il blocco di WordPress viene danneggiato, le sottopagine del vostro sito web potrebbero non essere più raggiungibili correttamente.

Se notate errori dopo aver modificato i permalink di WordPress, potete salvare nuovamente la struttura dei permalink nell'area di amministrazione di WordPress sotto Impostazioni > Permalink. In questo modo WordPress spesso ricrea le regole necessarie.

Errori comuni nelle modifiche di .htaccess

Molti problemi con il file .htaccess non derivano da cause tecniche complesse, ma da piccoli errori di sintassi o da regole contraddittorie. Prestate particolare attenzione ai seguenti punti:

  • Regole RewriteEngine duplicate: Più righe RewriteEngine On di solito non sono critiche, ma possono complicare la leggibilità del file.
  • Loop di reindirizzamento infiniti: Si verificano quando un reindirizzamento rimanda a se stesso o si scontra con una regola opposta.
  • Nomi di dominio errati: I segnaposto come example.ch devono sempre essere sostituiti con il vostro dominio reale.
  • Sintassi Apache obsoleta: I vecchi esempi con Order Allow,Deny, Deny from e Allow from risalgono ad Apache 2.2 e non sono più la sintassi raccomandata nei moderni ambienti Apache 2.4.
  • Regole nella posizione errata: Nei sistemi CMS, l'ordine delle regole può essere decisivo.
  • Requisito SSL mancante: I reindirizzamenti HTTPS funzionano correttamente solo se per il dominio è attivo un certificato SSL valido.

Cosa fare in caso di 500 Internal Server Error?

Se il vostro sito web non è più raggiungibile dopo una modifica al file .htaccess, procedete in modo calmo e sistematico:

  1. Aprite il Gestore file di cPanel.
  2. Navigate fino alla directory del sito web interessato.
  3. Rinominate il file .htaccess a titolo di prova, ad esempio in .htaccess-guasto.
  4. Richiamate nuovamente il vostro sito web nel browser.
  5. Se il sito è di nuovo raggiungibile, l'errore risiede molto probabilmente nel file .htaccess.
  6. Confrontate il file con la vostra copia di sicurezza o rimuovete l'ultima regola inserita.

Nel caso di WordPress, potrebbe essere successivamente necessario salvare di nuovo i permalink nell'area di amministrazione affinché WordPress generi nuovamente un file .htaccess corretto.

Best practice per un file .htaccess pulito

  • Create una copia di sicurezza prima di ogni modifica.
  • Inserite le nuove regole un passo alla volta e testate il sito web dopo ciascuna.
  • Commentate le vostre regole con il simbolo #, in modo che sia comprensibile anche in seguito a cosa servano.
  • Evitate reindirizzamenti doppi o contraddittori.
  • Utilizzate i reindirizzamenti permanenti 301 solo se la modifica deve essere definitiva.
  • Se possibile, conservate i file sensibili al di fuori della directory web accessibile pubblicamente.
  • Dopo le modifiche, controllate non solo la home page, ma anche le sottopagine, i moduli, le aree di login e i file multimediali.

FAQ sul file .htaccess

Perché non vedo il file .htaccess in cPanel?

I file che iniziano con un punto vengono trattati come file nascosti. Nel Gestore file di cPanel, sotto Impostazioni, attivate l'option Mostra file nascosti (dotfiles).

Posso cancellare il file .htaccess?

Dovreste farlo solo se sapete quale funzione svolge il file sul vostro sito web. In WordPress e in molte altre applicazioni, la cancellazione può causare il malfunzionamento di sottopagine, reindirizzamenti o regole di sicurezza. Create sempre un backup prima.

Perché una piccola modifica causa immediatamente un errore?

Il file .htaccess viene interpretato direttamente dal server web. Anche un'istruzione non valida, un carattere errato o una direttiva non supportata possono causare l'interruzione della richiesta da parte del server con un errore.

Il file .htaccess sostituisce un plugin di sicurezza o un firewall?

No. Il file .htaccess può integrare determinate misure di protezione, ma non sostituisce una strategia di sicurezza completa. Aggiornamenti, password sicure, applicazioni aggiornate, backup e meccanismi di protezione adeguati rimangono fondamentali.

Dovrei impostare i reindirizzamenti tramite .htaccess o tramite il mio CMS?

Dipende dal caso d'uso. Singoli e semplici reindirizzamenti possono essere configurati direttamente tramite .htaccess. In caso di molti reindirizzamenti o di una gestione editoriale, un plugin del CMS è spesso più chiaro. I reindirizzamenti tecnici come HTTPS o i reindirizzamenti del www sono spesso opportuni nel file .htaccess.

Riepilogo:
Il file .htaccess è uno strumento potente per il controllo del vostro sito web. È adatto per reindirizzamenti, regole HTTPS, protezione degli accessi e altre impostazioni tecniche. Al contempo, deve essere modificato con cautela, poiché regole errate possono compromettere immediatamente il sito web. Lavorate quindi sempre con copie di sicurezza e testate accuratamente le modifiche.

Il vostro sito web mostra un errore dopo una modifica o non siete sicuri di quale sia la regola corretta?
Rimuovete innanzitutto l'ultima modifica o ripristinate la vostra copia di sicurezza. In caso di domande, il supporto CURIAWEB è a vostra completa disposizione.

Hai trovato utile questa risposta? 1 Utenti hanno trovato utile questa risposta (1 Voti)