Dieser Artikel wurde am 9.2.2008 in meinem Blog veröffentlicht und 2009 in dieses Wiki übertragen.
Die Installation von drupal ist auch mit lighttpd als Webserver kein Problem. Sofern php bereits eingerichtet ist, fehlt lediglich noch die Möglichkeit lesbare URLSs einzusetzen. Dazu müssen zwei Dateien editiert werden:
Hier werden eine Handler für die 404 Fehler definiert und der Zugriff auf bestimmte Dateitypen verboten. Bei apache passiert das die DOCROOT installierte Datei .htaccess.
$HTTP["host"] == "host.domain.tld" {
server.document-root = "/www/host.domain.tld/htdocs/"
server.errorlog = "/www/host.domain.tld/logs/error.log"
accesslog.filename = "/www/host.domain.tld/logs/access.log"
# settings from .htaccess
server.error-handler-404 = "/index.php"
url.access-deny = ( "~",".inc",".engine",".install",".module",
".sh","sql",".theme",".tpl.php",".xtmpl",
"Entries","Repository","Root" )
# to enable drupal clean-urls we also need
# to modify sites/default/settings.php!
}
Dort wird der folgende Sourcecode einfach am Ende der Datei angefügt. (Im o.g. Beispiel wäre das die Datei /www/host.domain.tld/htdocs/sites/default/settings.php.)
if (strpos($_SERVER['SERVER_SOFTWARE'], 'lighttpd') !== false) {
$lighttpd_url = $base_url.$_SERVER['REQUEST_URI'];
$lighttpd_url = @parse_url($lighttpd_url);
if ($lighttpd_url['path'] != '/index.php' && $lighttpd_url['path'] != '/') {
$_SERVER['QUERY_STRING'] = $lighttpd_url['query'];
parse_str($lighttpd_url['query'], $lighttpd_query);
foreach ($lighttpd_query as $key => $val)
$_GET[$key] = $_REQUEST[$key] = $val;
$_GET['q'] = $_REQUEST['q'] = substr($lighttpd_url['path'], 1);
}
}
Anschliessend lighttpd neu starten und dann in der Admin Oberfläche von drupal die lesbaren URLs aktivieren.
Nachtrag: Das gleiche Vorgehen führt auch beim neuen Drupal 6 zum Erfolg.