Po ostatniej zmianie serwera, na maszynę w cheapvps.co.uk zauważyłem że przestały mi na stronach działać “ładne urle”. Po dwukrotnym sprawdzeniu czy wszystkie “.htaccessy” są na miejscu, zorientowałem się że nie mam przecież zainstalowanego Apache’a, tylko lighttpd.
Nie chciałem bawić się w instalowanie Apache’a skoro wszystko działało (oprócz rewrite-ów oczywiście). Szybkie googlowanie i znalazłem kilka stron z których mniej więcej dowiedziałem się jak użyć mod_rewrite w lighttpd.
Otóż niestety (przynajmniej dla mnie) lighttpd trzyma całą konfigurację w jednym pliku. W Apache’u mogliśmy w każdym folderze umieścić plik .htaccess i w nim skonfigurować np. mod_rewrite. Tutaj jest inaczej. Wszystko odbywa się w pliku lighttpd.conf, który znajduje się w katalogu /etc/lighttpd.
Dla WordPressa wystarczy że dopiszemy do pliku podany niżej kod. Przekierowuje on wszystkie urle oprócz sitemap, xmlrpc.php i katalogów zaczynających się na “wp-” do pliku index.php.
$HTTP["host"] =~ "(www.|)domena.pl$" {
url.rewrite = (
"^/(wp-.+).*/?" => "$0",
"^/(sitemap.xml)" => "$0",
"^/(sitemap.xml.gz)" => "$0",
"^/(xmlrpc.php)" => "$0",
"^/(.+)/?$" => "/index.php/$1"
)
}
Dla KohanyPHP używam poniższego kodu (oczywiście trzeba jeszcze dodać $HTTP["host"]…):
url.rewrite-once = (
".*\.(js|ico|gif|jpg|png|css|xsl|swf)$" => "$0",
"^/(.*)$" => "index.php/$1"
)
On z kolei przekierowuje wszystkie urle niekończące się na jpg, png, css itd. do pliku index.php.
Minusem lighttpd jest także to że po każdej takiej zmianie trzeba zrestartować serwer, można to zrobić wpisując w konsoli: /etc/init.d/lighttpd restart
Więcej na ten temat możecie znaleźć w oficjalnej dokumentacji.