lighttpd + drupal z cleanurls
Lighttpd od wersji 1.4.24 posiada opcję w module mod_rewrite o nazwie url.rewrite-if-not-file. Umożliwia ona poprawną konfiguracje rewrite dla popularnego systemu CMS, Drupala.
Opcja url.rewrite-if-not-file umożliwia przepisanie adresu w URL w zależności od tego, czy URI wskazuje na istniejący plik czy nie. W apache podobna możliwość była od dawna i Drupal zawsze wykorzystywał ją aby "upiększyć" URLe. Proponowana konfiguracja Apache dla Dupala wygląda więc tak:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Na szczęście w lighttpd możemy zrobić teraz to samo w ten sposób:
url.rewrite-if-not-file = (
"^/favicon.ico$" => "/favicon.ico",
"^/([^.?]*)\?(.*)$" => "/index.php?q=$1&$2",
"^/([^.?]*)$" => "/index.php?q=$1"
)
$HTTP["url"] != "/favicon.ico" {
server.error-handler-404 = "/index.php"
}
Przy takiej konfiguracji mod_rewrite nasz Drupal może śmigać z lighttpd bez ograniczeń!