In questo articolo esploreremo i principi fondamentali dell'utilizzo del file .htaccess, che è fondamentale per migliorare la SEO. Questo file assicura la corretta indicizzazione delle pagine da parte dei motori di ricerca. Impareremo come gestire i redirect, configurare la sicurezza e aumentare le prestazioni. Inoltre, forniremo suggerimenti su come configurare questo file in modo indipendente.
Perché è necessario .htaccess
Il file .htaccess agisce come una specie di "telecomando" per gli sviluppatori web sui server Apache. Offre strumenti utili per regolare vari parametri e gestire il comportamento di un sito web. Quando l'accesso diretto ai file di configurazione principali del server non è disponibile (come spesso accade con l'hosting virtuale, ad esempio), .htaccess diventa uno strumento utile per apportare le modifiche necessarie.
Htaccess si trova spesso nella cartella principale del tuo sito o in quelle cartelle in cui è necessaria una configurazione speciale. Ad esempio, se usi WordPress, la configurazione può essere eseguita tramite il plugin Yoast SEO, di cui abbiamo parlato nell'articolo su Configurazione del file robots.txtIn altri casi, è sufficiente andare nella cartella richiesta e modificare il file .htaccess esistente, oppure crearlo se non è ancora stato creato.
Configurazione del file .htaccess
301 Reindirizza htaccess
Un redirect 301 nel file .htaccess può essere paragonato a un redirect permanente su un sito web. Informa i motori di ricerca e i browser che la pagina è ora posizionata in modo permanente a un nuovo indirizzo e suggerisce di aggiornare i segnalibri e l'indicizzazione. Tale redirect è in genere utilizzato quando una pagina viene spostata o eliminata per preservare la sua posizione nei risultati di ricerca e reindirizzare i visitatori alla nuova posizione.
Per attivare i redirect, è necessario abilitare il comando corrispondente nel file .htaccess:
RewriteEngine on
Dopodiché puoi configurare la forma più semplice di reindirizzamento:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
Un reindirizzamento simile utilizzando il Reindirizzamento permanente la direttiva si presenta in questo modo:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
Questi sono i metodi di reindirizzamento più semplici da configurare. Consideriamo una configurazione che utilizza altri tipi di reindirizzamenti più avanzati con mod_rewrite modulo:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
Un .htaccess di reindirizzamento 302, che indica una rilocazione temporanea, si incontra molto meno frequentemente. Ecco un esempio di tale impostazione:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
Direttiva ErrorDocument
Questa impostazione ti consente di controllare cosa vede l'utente quando si verificano errori HTTP sul tuo sito. Invece del messaggio di errore standard, puoi mostrare la tua pagina, che sarà più informativa per il visitatore e lo aiuterà a capire cosa è successo. Per l'uso, segui semplicemente questa sintassi:
ErrorDocument <error_code> <URL_page>
Per esempio,
ErrorDocument 404 /errors/not_found.html
Significa che quando un 404 si verifica un errore, la pagina in /errori/non_trovato.html verrà aperto. Gli URL assoluti sono specificati in modo simile:
ErrorDocument 500 http://example.com/errors/server_error.html
Questo esempio indica la visualizzazione del errore_server.html pagina alla http://example.com/errors/ in caso di un 500 errore.
Negare l'accesso a una directory del sito
Il file .htaccess contiene il comando Deny from all, che aiuta a negare l'accesso a determinate cartelle o file sul tuo server web. Questo può essere utile se vuoi nascondere informazioni private o file importanti ai visitatori del sito per garantire la sicurezza dei dati.
Per disattivare l'elenco (visualizzazione di tutte le directory disponibili), è necessario aggiungere la riga:
Options -Indexes
Un esempio di blocco dell'accesso a una directory specifica è il seguente:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
Allo stesso modo, puoi negare l'accesso a un singolo file:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
Oppure per un intervallo di file per estensione:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
Blocco dell'accesso tramite IP
Il blocco dell'accesso tramite IP nel file .htaccess è un metodo che consente di limitare l'accesso al tuo sito Web per indirizzi IP specifici o per i loro gruppi. Questo può essere utile se vuoi impedire l'accesso al tuo sito o a parti specifiche per determinate persone o bot indesiderati.
Il blocco di un singolo indirizzo IP si effettua con il comando:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
Il blocco di più indirizzi IP avviene in modo simile duplicando "Nega da" riga con gli indirizzi richiesti.
Per bloccare un intervallo di indirizzi IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
Per consentire l'accesso solo a IP specifici, aggiungere il codice:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
Per una negazione completa dell'accesso, utilizzare la direttiva Deny from alle per bloccare gli indirizzi tramite maschera, specificare Nega da 11.22.
Dove, 11.22 è l'indirizzo IP mask.
Blocco dei visitatori tramite User-Agent
Il blocco degli utenti tramite User-Agent nel file .htaccess è un metodo per controllare chi può accedere al tuo server web in base alle informazioni sul browser utilizzato dal visitatore. La stringa User-Agent contiene dati sul browser utilizzato da una persona per interagire con il tuo server e, grazie a queste informazioni, puoi limitare l'accesso a determinati utenti.
Il modo più comune per bloccare tramite User-Agent è usare mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
In questo esempio:
- RewriteCond %{HTTP_USER_AGENT} viene utilizzato per controllare la stringa User-Agent.
- ^Bot1, ^Bot2, ^Bot3 sono esempi di stringhe User-Agent che vogliamo bloccare. I modificatori NC indicano che il confronto non dovrebbe essere sensibile alle maiuscole/minuscole.
- RewriteRule ^.*$ - [F,L] si applica alla richiesta se una qualsiasi delle condizioni RewriteCond è soddisfatta. Invia una risposta con il codice di stato 403 Forbidden (F) e interrompe l'elaborazione delle regole (L).
Memorizzazione nella cache in htaccess
La configurazione della memorizzazione nella cache tramite il file .htaccess aiuta ad accelerare il tuo sito rendendolo più veloce da caricare per gli utenti. Funziona così: alcuni file, come immagini, stili CSS e script JavaScript, vengono memorizzati nella cache del browser dell'utente dopo il primo caricamento. Ora il browser può usare questi file dalla cache, invece di ricaricarli dal server ogni volta che l'utente visita una pagina. Ciò riduce i tempi di caricamento e migliora le prestazioni del sito.
Considera un esempio:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Per le risorse che vengono aggiornate frequentemente, invece, è necessario disattivare la memorizzazione nella cache:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
Ottimizzazione delle prestazioni del sito
Migliori mod_deflate e mod_gzip moduli in Apache aiutano a comprimere le informazioni che il server invia ai dispositivi degli utenti. Ciò riduce le dimensioni dei file, il che a sua volta velocizza il caricamento delle pagine. Tuttavia, è importante ricordare che il supporto e la configurazione di questi moduli possono variare a seconda del server.
Esempio di utilizzo del mod_deflate modulo:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Esempio per mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
Abbiamo discusso le direttive più comunemente utilizzate. Puoi familiarizzare con tutte le capacità del file nel documentazione ufficiale.
Come verificare la funzionalità del file .htaccess
Per verificare se il file .htaccess funziona sul sito, puoi procedere come segue:
- Modifica intenzionalmente il file .htaccess con un errore. In risposta, il server dovrebbe dare un errore. Questo metodo mostra se l'operazione del file è generalmente applicata sul server.
- Controlla la funzionalità di modifiche specifiche che hai apportato. Ad esempio, apporta una piccola modifica a uno dei parametri e valuta la presenza di modifiche.
- Controlla il codice di stato della pagina se le modifiche sono correlate alla risposta del server. Come fare, lo abbiamo descritto in precedenza nell'articolo Codici di errore HTTP: un elenco completo degli errori del server.
- Fare riferimento ai log del server. Mostrano tutti gli errori relativi al funzionamento del file .htaccess.
- Eseguire test utilizzando servizi o strumenti online.
È importante capire che per verificare la funzionalità del file .htaccess, non è necessario eseguire tutti i passaggi in una volta. È sufficiente scegliere il metodo più adatto dall'elenco e utilizzarlo.
Conclusione
La configurazione del file .htaccess è un passaggio importante per ottimizzare e proteggere il tuo server Apache. Abbiamo esplorato come questo file aiuta a gestire i reindirizzamenti, comprimere i contenuti e garantire la sicurezza. Una volta che hai imparato a lavorare con .htaccess, ottieni uno strumento potente per migliorare le prestazioni e la funzionalità dei siti web.