Apache – Riscrittura delle URL con .htaccess

Send Us a Sign! (Contact Us!)
--> (Word) --> (PDF) --> (Epub) --> (Text)
--> (XML) --> (OpenOffice) --> (XPS)

.htaccess (hypertext access) è il nome che normalmente prende il file di configurazione delle directory di Apache. E’ chiamato con il punto perchè 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’è posizionato e alle sue sottodirectory.

    Posso cambiare il nome al file .htaccess?

    Sì, è 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 [gs server] a gestire gli accessi in modo personalizzato.

    Questo è 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 [gs 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: è 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 è 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]

    SOURCE

    LINK (andreavit.com)

    LANGUAGE
    ITALIAN