Il file .htaccess utilizzato da Apache definisce una serie di regole a livello di directory; Spesso lo si chiama in causa per l’url rewriting o per un redirect permanente. In questo articolo vi illustrerò 10 modi per sfruttare al meglio un .htaccess all’interno dei vostri applicativi web, dove è possibile allegherò delle guide di approfondimento che meritano di essere lette:
1 – Riconoscimento user agent e redirect
Ho parlato ampiamente nell’articolo precedente illustrando i meccanismi di detect e redirect con una serie di meccanismi tra cui anche l’.htaccess che riassumo in queste poche righe di codice:
RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$
RewriteRule ^(.*)$ http://mobi.tuosito.it [R=301]
L’esempio effettua il seguente controllo: nel caso in cui lo user agent del browser contenga la stringa “iPhone” imposto la condizione di redirect permanente alla versione mobile del sito.
Approfondimento: http://www.marioconcina.it/blog/mobile-development/script-di-redirect-per-dispositivi-mobile.html
2 – Creare pagine di errori personalizzabili
E’ possibile realizzare pagine d’errore custom applicando la regola ErrorDocument seguida dal numero d’errore e il percorso della pagina:
ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/unauthorized.html
ErrorDocument 403 /errors/forbidden.html
ErrorDocument 404 /errors/404notfound.html
ErrorDocument 500 /errors/internalservererror.html
3 – Redirect permanente da un url all’altro
Esistono diverse regole per effettuare un redirect permanente da un url all’altro:
Redirect 301 /vecchia_pagina.html http://www.nuovosito.com/nuova_pagina.php
Redirect permanent /vecchia_pagina.html http://www.nuovosito.com/nuova_pagina.php
RewriteRule ^vecchia_pagina.html$ http://www.nuovosito.com/nuova_pagina.php [L,R=301]
4 – Settare il charset UTF-8
Per evitare problemi di encoding è possibile settare il charset da .htaccess, anche in questo caso ci sono diverse regole:
AddDefaultCharset utf-8
AddDefaultCharset UTF-8
AddType 'text/html; charset=UTF-8' html
Ricordatevi, però, che se utilizzate questa regola da .htaccess non serve definire il meta tag all’interno del codice html.
5 – Ridurre, comprimendo il peso delle pagine
Grazie a queste regole è possibile accellerare notevolmente il caricamento delle vostre pagine web guadagnando in banda e stabilità di navigazione, ecco due esempi:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml
application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Approfondimento: http://pc-notes.web4star.com/ottimizzare-pagine-web-su-apache_post-54/
6 – Rimuovere le estensioni dagli url
Per modificare un url da http://www.tuosito.it/chi-siamo.html a http://www.tuosito.it/chi-siamo è possibile applicare la regola che rimuove le estensioni agli indirizzi:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
In questo caso tutte le estensioni di tipo *.html verranno rimosse
Approfondimento: http://eisabainyo.net/weblog/2007/08/19/removing-file-extension-via-htaccess/
7 – Rimuovere www dall’url
RewriteEngine On
RewriteCond %{HTTP_HOST} !^miosito.it$ [NC]
RewriteRule ^(.*)$ http://miosito.it/$1 [L,R=301]
8 – Forzare il download di file
Spesso, quando effettuiamo un download contenuti multimediali con estensioni di tipo *.mp3, *.doc, *.xls, *.wmv, ecc… se non forzate da codice vengo direttamente gestite da browser e spesso aperte al suo interno. Con .htaccess, invece, è possibile forzare il download di questi contenuti multimediali sulla propria macchina, come?
ForceType application/octet-stream
Header set Content-Disposition attachment
9 – Proteggere un file utilizzando htaccess
Creare un file .htpasswd contenenti username e password di accesso al file.
A questo punto creare nell’.htaccess la regola:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/mysite/.htpasswd
AuthGroupFile /dev/null
require valid-user
require valid-user
Approfondimento: http://www.sastgroup.com/tutorials/proteggere-un-file-con-password-usando-il-file-htaccess
10 – Abilitare/Revocare accesso ad una pagina tramite indirizzo IP
Con .htaccess è possibile abilitare o revocare l’accesso ad un’intera directory, al sito ad un singolo file filtrando uno o più indirizzi IP, ecco alcuni esempi:
order deny,allow
deny from all
allow from 127.0.0.1
Applico una regola per la pagina login.php “deny from all”: nessuno può accedervi tranne l’indirizzo 127.0.0.1 “allow from”.
order deny,allow
deny from all
allow from 127.0.0.1
Analogamente blocco l’intera root directory sito se non specifico alcuna pagina