HEELPBOOK - Apache - Riscrittura delle URL con .htaccess ########################################## .htaccess (hypertext access) e' il nome che normalmente prende il file di configurazione delle directory di Apache. E' chiamato con il punto perche' generalmente i file di sistema nascosti nei sistemi operativi Unix sono denominati con il punto davanti (i cosiddetti dot files). ############## Che cosa mi permette di fare? Le operazioni che generalmente sono eseguite con questo tipo di file sono: configurazione delle autorizzazioni e autenticazioni, per poter personalizzare l'accesso delle directory e la sicurezza delle varie directory. personalizzazione delle pagine di errore, mostrando messaggi (o pagine) customizzati a seconda degli errori che possono essere restituiti agli utenti. redirezioni delle richieste HTTP verso altre URL, utile per eseguire URL rewriting. Dove posso inserirlo? I file .htaccess sono inseribili in qualsiasi directory del web server e le impostazioni di ciascun file vengono applicate alla directory dov'e' posizionato e alle sue sottodirectory. ############## Posso cambiare il nome al file .htaccess? Si, e' possibile cambiare il nome del file usando la direttiva AccessFileName nel file httpd.conf. Per ridenominarlo .urlwriting basta inserire la seguente riga di codice: AccessFileName .urlwriting ############## Come posso impostare la pagina 404 personalizzata? Bisogna impostare all'interno del file .htaccess una riga di codice del tipo: ErrorDocument 404 http://www.miosito.it/pagina-404.html ############## Come posso personalizzare l'accesso alle cartelle con .htaccess? E' necessario impostare alcune direttive all'interno del file in grado di istruire il web server a gestire gli accessi in modo personalizzato. Questo e' un esempio di autenticazione regolata da .htaccess con l'ausilio dei file di configurazione utente (/www/passwords/password.file) e gruppi (/www/passwords/group.file). AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins Sottolineo che l'uso di .htaccess per personalizzare l'autenticazione tramite password appare forzata sia per questioni di sicurezza, sia per questioni di performance del server. ############## Come posso riscrivere le URL? L'URL rewriting viene implementato con l'ausilio di 4 direttive: * RewriteEngine: e' necessario settare a on questa direttiva per poter attivare la riscrittura; * RewriteRule: definisce le regole di riscrittura, la forma delle URL, lo status code HTTP da restituire e i molti altri parametri impostabili con i flag; * RewriteBase: definisce il percorso di base da applicare alle regole di riscrittura definite successivamente nel sorgente del file di configurazione. * RewriteCond: imposta le condizioni a cui per poter applicare la regola di riscrittura specificata successivamente nel codice sorgente; Per gestire in modo corretto l'URL rewriting e' bene avere dimestichezza con la sintassi delle espressioni regolari. ############## Alcuni esempi di URL rewriting frequenti: #Redirige con status 301 tutte le URL di forma miosito.com/* in www.miosito.com/* RewriteCond %{HTTP_HOST} ^miosito\.com RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L] #Redirige con un 302 tutte le richieste da pagine HTML a pagine php RewriteRule (.*).htm$ /$1.php [R=301,L] #regola per eliminazione problema del trailing slash sulle URL a cartella RewriteRule ^/directory$ directory/ [R=301,L] #regola per eliminare la pagine con il solo parametro id all'interno RewriteCond %{QUERY_STRING} ^id=([0-9]+)$ RewriteRule ^/web(.+)$ /web/? [R=301,L] #regola per redirigere le richieste HTTP a seconda degli orari del giorno RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700 RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900 RewriteRule ^file\.html$ file-giorno.html RewriteRule ^file\.html$ file-notte.html #regola per fornire contenuti diversi a seconda dello user agent RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.* RewriteRule ^file\.html$ file.mozilla3.html [L] RewriteCond %{HTTP_USER_AGENT} ^Googlebot/.* [OR] RewriteRule ^file\.html$ file.meglio-non-fare-questo-cloaking.html [L] #Regola per trasformare URL statiche in URL dinamiche con redirezione 302 RewriteRule ^notizia/(.*)_([0-9]+).html$ notizia/?id=$2 [L] ############ ARTICLE INFO ############# Article Month: July Article Date: 12/07/2012 Permalink: http://heelpbook.altervista.org/2012/apache-riscrittura-delle-url-con-htaccess/ Source: http://www.andreavit.com/blog/url-rewriting-e-redirect/riscrittura-delle-url-con-htaccess-apache-consigli-esempi-pratici-2.html Language: English View more articles on: http://www.heelpbook.net/ Follow us on Facebook: http://it-it.facebook.com/pages/HeelpBook/100790870008832 Follow us on Twitter: https://twitter.com/#!/HeelpBook Follow us on RSS Feed: http://feeds.feedburner.com/Heelpbook Follow us on Delicious: http://delicious.com/heelpbook