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 ;-).