Verifica sintattica del file .htaccess
Basta incollare il contenuto del file .htaccess per rilevare all'istante gli errori più tipici: blocchi non chiusi, nomi di direttiva sbagliati, argomenti mancanti nelle regole di riscrittura e condizioni rimaste senza regola.
Trovare gli errori in un file .htaccess
Un .htaccess è un file nel quale un solo carattere sbagliato può mettere a terra un intero sito con un errore 500. Incollatene il contenuto e questo strumento coglie sul momento gli errori tipici: un tag di blocco non chiuso, un nome di direttiva scritto male, un RewriteRule a corto di argomenti, un RewriteCond rimasto isolato.
Ciò che qui si controlla è la sintassi, non se il file faccia quel che intendevate. Una regola di riscrittura può essere formata in modo impeccabile e tuttavia non condurre nessuno all'indirizzo che avevate in mente, se le condizioni vengono nell'ordine sbagliato. Due particolari della specifica meritano inoltre di essere noti. Il primo: un RewriteCond si applica soltanto al RewriteRule che lo segue immediatamente, sicché elencare più condizioni e porre un'unica regola in fondo semplicemente non funziona. Il secondo: se AllowOverride è disabilitato nella configurazione del server, l'.htaccess non viene mai letto. Quando nulla accade nonostante quanto avete scritto, sospettate della configurazione del server prima che del file.
Come si usa
- Incollate il contenuto del vostro .htaccess Inserite l'intero file così com'è.
- Provate prima gli esempi Sono forniti un esempio valido e uno che contiene errori.
- Leggete le righe segnalate I tag non chiusi e gli argomenti mancanti vengono riferiti con il loro numero di riga.
-
Controllate la configurazione del server se nulla agisce
Se
AllowOverrideè disabilitato, il file non viene letto.
Consigli per sfruttarlo al meglio
- Questa verifica è un'analisi statica euristica riga per riga e non un vero analizzatore di Apache. Prima di applicare le modifiche, provate sempre su un servente reale o su un ambiente di prova.
- Il comando
apachectl configtest(httpd -t) controlla solo i file di configurazione principali letti all'avvio; i file.htaccessvengono letti a ogni richiesta e quindi non sono controllati. Gli errori di un.htaccesscompaiono nel registro degli errori quando quella cartella viene effettivamente richiesta. Questo strumento serve come controllo preliminare. - L'avviso sugli errori di digitazione nei nomi delle direttive è una supposizione di bassa attendibilità, fondata su un elenco di riferimento: usando direttive di moduli poco diffusi, l'avviso può comparire anche se la scrittura è corretta.
- È consueto accumulare più condizioni di riscrittura in righe consecutive: l'avviso compare soltanto quando all'ultima di esse non segue alcuna regola.
- Prima di caricare in produzione conviene applicare le modifiche a poco a poco e verificare per gradi che non incidano sul funzionamento esistente.
Quando torna utile
Nel verificare prima della pubblicazione
Un errore nell'.htaccess abbatte l'intero sito, il che rende la verifica preventiva ampiamente conveniente.
Nell'aggiungere a un insieme di regole di riscrittura
Dopo aver aggiunto una condizione a regole esistenti, potete vedere se la forma ha tenuto.
Nel decifrare una configurazione ereditata
In un file a lungo integrato, potete stabilire se qualche parte abbia cessato di agire.
Nel circoscrivere un errore 500
Un errore di sintassi nel .htaccess non ferma il server: è quella cartella a restituire un errore 500. Potete stabilire per prima cosa se la causa del 500 sia la sintassi.
Termini dell'.htaccess
- RewriteEngine
- La direttiva che abilita la riscrittura. A meno che non sia posta a
On, nessuna delle regole seguenti agisce. - RewriteCond
- Una condizione su una riscrittura. Si applica soltanto al
RewriteRuleche la segue immediatamente, il che conviene tenere a mente. - RewriteRule
- La regola di riscrittura vera e propria, che prende un modello, una sostituzione e flag come
[L,QSA]. - Flag
- Le impostazioni fra parentesi quadre dopo una regola.
Larresta qui l'elaborazione eQSAriporta la stringa di ricerca. - Tag di blocco
- Un racchiudimento come
<IfModule>o<Files>. Lasciarne uno non chiuso produce un errore 500. - AllowOverride
- L'impostazione lato server che decide quali direttive un
.htaccesspossa usare. Là dove è disabilitata, il file non viene letto.
Domande frequenti
RewriteRule schema destinazione [contrassegni], con tre elementi. Lo schema è un'espressione regolare che si confronta con il percorso richiesto, senza la barra iniziale, e nella destinazione si possono richiamare i gruppi fra parentesi con $1 e simili. I contrassegni si indicano fra parentesi quadre separati da virgole, per esempio [L] per interrompere l'elaborazione delle regole successive o [R=301] per un reindirizzamento permanente.%{REQUEST_FILENAME} !-f, che si applica soltanto quando il file non esiste.
A proposito — perché si chiama .htaccess
Il nome .htaccess è l'abbreviazione di «accesso all'ipertesto» e risale ai primi servienti web della metà degli anni Novanta e alle prime versioni di Apache. In origine serviva a impostare l'autenticazione con parola d'ordine cartella per cartella e fu concepito perché il titolare di ciascuna cartella potesse sovrascrivere le impostazioni del proprio ambito senza che l'amministratore dovesse toccare il file di configurazione principale.
La forza del file sta nel fatto che, purché Apache lo consenta con l'apposita direttiva, basta caricarlo via trasferimento file o dal gestore di file perché le impostazioni abbiano effetto immediato. Anche chi, in un ambiente di ospitalità condivisa, non ha alcun accesso al file di configurazione del servente può così governare nel dettaglio reindirizzamenti, memorizzazione e restrizioni d'accesso cartella per cartella.
Questa comodità ha però un prezzo. La documentazione ufficiale di Apache afferma esplicitamente che, avendo accesso ai file di configurazione del servente, conviene scrivere lì anziché nel .htaccess. La ragione è semplice: a ogni richiesta Apache rilegge il file risalendo dalla cartella interessata fino alla radice, con un costo non trascurabile rispetto alla configurazione principale.
Inoltre un errore di sintassi provoca, in molti ambienti condivisi, un errore interno del servente su tutta la cartella, con una pagina bianca e non poco tempo perso a individuarne la causa. Affiancare alla lettura a vista un controllo statico come questo aiuta a prevenire incidenti dovuti a semplici distrazioni.