10 utili regole da sfruttare nell’htaccess

10 utili regole da sfruttare nell’htaccess

14058
25
CONDIVIDI

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