htacess

Il file .htaccess viene utilizzato per la configurazione delle direttive specifiche per i server Web in esecuzione su Apache. Questo file influisce sulla directory in cui è situato e su tutte le sottodirectory all’interno di essa. Ad esempio, se l’.htaccess si trova all’interno della directory principale, interesserà tutte le sottodirectory al suo interno. Se invece il file si trova in una directory specifica, interesserà solo quella directory.
Se si ha accesso alla gestione del server non bisogna utilizzare l’htaccess per le impostazioni principali di accesso al sito, per attivare gzip o per la riscrittura degli url, perchè comunque questo file rallenta un po’ le prestazioni del sito. Sempre meglio impostare certe impostazioni lavorando lato server. Invece se si è su un hosting condiviso allora si possono impostare in questo modo le impostazioni che necessitano di un intervento.

Alcune piattaforme CMS come WordPress e Drupal sono inoltre dotate di file .htaccess specifici che consentono di specificare determinate configurazioni applicabili esclusivamente a quel sito
Con l’htaccess si possono configurare numerose cose, come ad esempio queste che sono tra le più usate:

  • Personalizzazione delle pagine di errore
  • Reindirizzamenti
  • Limitazione degli utenti in base all’IP
  • Blocco di bot malevoli
  • Blocco di referrer spam
  • Impostazione delle intestazioni HTTP
  • Blocco per i Robot a determinate pagine o cartelle
  • Protezione con password di determinate cartelle o pagine

Ma questo file può essere utilizzato per ottenere molto di più.
Bisogna stare molto attenti alle modifiche fatte sull’htaccess, perché se non scritto a dovere può mettere fuori uso il sito. Per modificarlo è sufficiente aprirlo con editor di testo come ad esempio Notepad++.

Come reindirizzare gli utenti a una pagina di errore specifica

In base al codice di stato restituito da un determinato file o pagina, puoi reindirizzare l’utente a una pagina di errore personalizzata.

ErrorDocument 403 /forbidden.html
ErrorDocument 404 /notfound.html
ErrorDocument 500 /servererror.html

Blocco degli utenti in base all’IP

Per motivi di sicurezza, puoi bloccare gli utenti in base al loro IP. Nell’esempio seguente, ci sono due IP bloccati. Possiamo anche decidere di non includere l’ultima cifra dell’indirizzo IP che comporterà il blocco di tutti gli IP che contengono le prime tre cifre.
order allow,deny
deny from 230.15.23.10
deny from 123.x.x.x
allow from all

Blocco dei referrer indesiderati

Il blocco dei referrer è un metodo utilizzato per impedire a determinati domini di rubare la larghezza di banda. Utilizza lo snippet di seguito per definire quali domini non sono autorizzati a fare riferimento ai tuoi contenuti e quindi riceveranno un 403 Forbidden
RewriteCond %{HTTP_REFERER} sitodabloccare\.com [NC,OR] RewriteCond %{HTTP_REFERER} altrosito\.com
RewriteRule .* - [F]

Reindirizzamento immagini hotlink

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?iltuosito.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?iltuosito.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://immagineredirect.com/foto.jpg [NC,R,L]

Bloccare bot dannosi

RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR] RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR] RewriteCond %{HTTP_USER_AGENT} ^attach [OR] RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR] RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]

Reindirizzamento durante il mantenimento del sito


RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.html [R=302,L]

Utilizzo della cache del browser

Il file .htaccess può essere utilizzato anche per migliorare le prestazioni del sito web sfruttando la memorizzazione della cache del browser. Ogni tipo di file può essere definito con un particolare valore di scadenza.

ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"

Abilitazione della compressione Gzip

L’abilitazione di Gzip sul server aiuta a migliorare le prestazioni del sito e la sua velocità. Se il server non lo fa di suo allora si possono inserire nell’.htaccess alcune direttive utili allo scopo:

AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

Negare i metodi di richiesta HTTP

Esistono diversi metodi di richiesta HTTP che vengono utilizzati per ottenere vari risultati. Se ci sono alcuni metodi HTTP che non vuoi che siano utilizzati sul tuo sito web, puoi negarli con .htaccess.
RewriteCond %{REQUEST_METHOD} !^(HEAD|OPTIONS|POST|PUT)
RewriteRule .* - [F]

Reindirizzamenti

Se è necessario eseguire un reindirizzamento per una pagina che è stata spostata o che ha cambiato nome, è possibile farlo facilmente con .htaccess. Il redirect 301 è il miglior metodo lato seo che si possa utilizzare per non perdere posizionamenti di vecchie pagine.
Redirect 301 https://ilmiosito.com/vecchiapagina https://ilmiosito.com/nuovapagina

Rimuovere www

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

Impedire modifiche al file .htaccess


order allow,deny
deny from all
satisfy all

Bloccare accesso ai Blank User Agent

RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteRule ^ - [F]

Specifiche per WordPress

Bloccare modifiche al wp-config


order allow,deny
deny from all

Bloccare scansione autore di post

RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301] Bloccare accesso al file xmlrpc

order deny,allow
deny from all

Disabilitare accesso a wp-includes


RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L]

Inserire uno / alla fine di ogni file

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://iltuosito.com/$1/ [L,R=301]

Disabilitare l’upload di file php nella directory upload


deny from all

Disabilitare l’accesso al file xmlrpc


order deny,allow
deny from all