1. /etc/lighttpd/lighttpd.conf
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!
}
2. DOCROOT/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.






