Jan 04 2009

Apache mod_rewrite a htaccess na Debianu

Tag: Apache,Debian,LinuxJens @ 23:00

Zprovoznění mod_rewrite pro Apache2 na různých verzích debianu nebylo vždy stejné. Dřívější funkční použití a2enmod vyžadovalo (na prvních verzích Etche) předponu mod_. V současné stable verzi (Etch/6) i v testing (Lenny) se oba přístupy sjednotili a stačí tedy už jen: a2enmod rewrite. Musím připomenou že utilita a2enmod vytváří pouze symbolický link z /etc/apache2/mods-available do /etc/apache2/mods-enabled (takže se bez ní dá jednoduše obejít s využítím ln -s ...).

Celý postup pak tedy vypadá následovně (vše je třeba dělat pod rootem nebo použít sudo).

  1. Povolení modulu
  2. # a2enmod rewrite
    
  3. Nastavení konfigurace Apache pro daný adresář a (virtuální doménu):
    <Directory /var/www/projekt>
    	Options FollowSymLinks
    	AllowOverride All
    </Directory>
    
  4. A konečně, v souboru /var/www/projekt/.htaccess musí být hned na začátku:
    RewriteEngine on

Pokud by jste chtěli být úplně „precizní“, tak se doporučuje ještě v souboru .htaccess zapsat konfiguraci pro přepisovaní pomocí mod_rewrite do podmíněného bloku kde se testuje, zda-li je mod_rewrite natažen. Tedy například takto:

<IfModule mod_rewrite.c>
	RewriteEngine On
	...
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule . /index.php [L]
	...
</IfModule>

Vyzkoušeno na: Lenny: Apache/2.2.9 a Etch: Apache/2.2.3.