I file .htaccess vengono usati nei siti Internet per “scavalcare” (override in inglese) la configurazione base del Web Server.

In un’installazione usuale di Apache avviene questo: all’avvio il demone legge il suo file di configurazione (httpd.conf, 000-default o default, in base alla distribuzione usata) determinando il comportamento da tenere in seguito ad una richiesta HTTP di un client. Prima di elaborare la risposta, però, verifica se nella cartella che contiene il file richiesto (ad esempio una pagina index.html), o nelle cartelle superiori, è presente anche il file .htaccess e in tal caso lo legge modificando a runtime la sua configurazione e quindi il suo comportamento.

La versione di Apache2 che viene installata dai repository ufficiali di Debian 6 (Squeeze) di default non permette la sovrascrittura della configurazione mediante .htaccess, ma si può abilitare. Ecco come:

  1. Per prima cosa occorre abilitare il modulo mod_rewrite:
    # a2enmod rewrite
    Quest’istruzione non fa altro che creare un link simbolico del file “/etc/apache2/mods-available/rewrite.load” in /etc/apache2/mods-enabled/rewrite.load”
  2. Successivamente bisogna imporre nella configurazione base di Apache di cercare eventuali file .htaccess ed interpretarli. È necessario modificare il file “/etc/apache2/sites-enabled/000-default” da così:

    [...]
    DocumentRoot /media/data/www
    <Directory /media/data/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    </Directory>
    [...]

    A così:

    [...]
    DocumentRoot /media/data/www
    <Directory /media/data/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
    </Directory>
    [...]

    Il percorso definito in DocumentRoot e in <Directory …> devono essere uguali.
  3. Riavviate Apache e il gioco è fatto:
    # service apache2 restart