pagenoare's devblog

python ftw!

Pseudo .htaccess w lighttpd

| written by pagenoare, on Jul 31, 2008 6:15:08 PM.

Po przesiadce z apache na lighttpd zabrakło mi osobnej konfiguracji dla każdej strony. Coś jak .htaccess w apache.

Poszperałem, poczytałem i znalazłem bardzo przydatną funkcje configa, mianowicie include_shell. Skoro mogę ustawić w configu output z konsoli, to będąc programistą, czemu by sobie takiego skryptu nie napisać? Teraz pytanie – w czym? Wybór wpadł na basha (łatwe operacje na plikach – cat plik).

Po kliku minutkach pisania miałem gotowy skrypt. Sprawdzał /var/www/*/.rewrite, i jeśli ma więcej niż 0B, to wywala go (catem) na ekran. No dobrze… ale jak ja z każdego pliku zczytam, to to będzie globalnie, tak nie chciałem. Po kilku chwilach myślenia i przeglądania doca, dopisałem do swojego skryptu 3 linie. Taki banalny, lightowy if, który ustawia wartość w zależności od domeny. Kod prezentował się tak:

#!/bin/bash

for i in /var/www/*; do
    if [[ -s "$i/.rewrite" ]]; then
        a=${i##*/}
        echo '$HTTP["host"] =~ "^'${a/./\.}'$" {'
        cat "$i/.rewrite";
        echo "}";
    fi;
done

Umieściłem go w /usr/share/lighttpd/get_rewrites (dając prawa +x), a w /etc/lighttpd/lighttpd.conf dałem regułkę: include_shell „/usr/share/lighttpd/get_rewrites”. Niestety pozostał nadal mały problem – każda zmiana w tym pliku wymaga reload serwera, no ale, przynajmniej jest wg mnie czytelniej ;-).

Leave a Reply