Lighty i rewrite

Konfiguracja serwerów, usług, itp.
Awatar użytkownika
ruun
Member
Posty: 1366
Rejestracja: 29 marca 2007, 21:07
Lokalizacja: Kruszwica

Lighty i rewrite

Post autor: ruun »

Na serwerze za http odpowiada Lighttpd. Próbuję na nim zrobić przepisywanie adresów (rewrite).

Mam taką regułkę

Kod: Zaznacz cały

url.rewrite-once = (
        "/(.*)\.(.*)" => "$0",
        "/(css|pliki|img|js)/" => "$0",
        "^/([^.]+)$" => "/index.php?p=$1",
        "^pobierz/([^.]+)/?$" => "/pobierz.php?plik=$1"
)
Działają linki postaci

Kod: Zaznacz cały

strona.pl/kontakt --> strona.pl/index.php?p=kontakt
a takie nie działają

Kod: Zaznacz cały

strona.pl/pobierz/pomiary/cennik.pdf --> strona.pl/pobierz.php?plik=pomiary/cennik.pdf
Zapewne błąd mam tu

Kod: Zaznacz cały

^pobierz/([^.]+)/?$
Co robię źle?
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

A na co ma się przepisywać ta czwarta reguła?
Awatar użytkownika
ruun
Member
Posty: 1366
Rejestracja: 29 marca 2007, 21:07
Lokalizacja: Kruszwica

Post autor: ruun »

Czwarta reguła, czyli
"^pobierz/([^.]+)/?$" => "/pobierz.php?plik=$1"
przepisuje

Kod: Zaznacz cały

"^pobierz/([^.]+)/?$"
na

Kod: Zaznacz cały

"/pobierz.php?plik=$1"
a błąd jest w pierwszej części (pogrubionej) ale ja nie wiem jaki.
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

Ale jak powinna przepisywać? Chodzi np. o:

Kod: Zaznacz cały

/pobierz/coś/tam/plik.txt => /pobierz/php?plik=plik.txt
To w takim razie czy nie zadziała:

Kod: Zaznacz cały

"^pobierz/.*/([^/]+)$" => "/pobierz.php?plik=$1"
Awatar użytkownika
ruun
Member
Posty: 1366
Rejestracja: 29 marca 2007, 21:07
Lokalizacja: Kruszwica

Post autor: ruun »

ponton pisze:Ale jak powinna przepisywać?
Napisałem w pierwszym poscie.

Kod: Zaznacz cały

strona.pl/pobierz/pomiary/cennik.pdf --> strona.pl/pobierz.php?plik=pomiary/cennik.pdf
całość za pobierz/ ma przerzucić do zmiennej plik w pobierz.php.

ponton pisze:To w takim razie czy nie zadziała
Niestety nie działa.
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

Napisałem w pierwszym poscie.
To źle Cię zrozumiałem...

Pierwszy błąd to chyba brak "/" na początku. Robisz od razu "^pobierz" zamiast "^/pobierz". Druga rzecz, to nie wiem, co ma robić "[^.]" -- "^" oznacza dopełnienie zbioru, więc "[^.]" oznacza nic (dopełnienie wszystkiego). ;) I ostatnia sprawa to "/" na końcu, który w ogóle się nie zmatchuje w tym przypadku.

To powinno działać:

Kod: Zaznacz cały

^/pobierz/(.+)$
Awatar użytkownika
ruun
Member
Posty: 1366
Rejestracja: 29 marca 2007, 21:07
Lokalizacja: Kruszwica

Post autor: ruun »

ponton pisze:To powinno działać:

Kod: Zaznacz cały

^/pobierz/(.+)$
Jak sprawdzam na http://www.regexp.net to działa ale na serwerze nie chodzi. Cały czas dostaję błąd 404.
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

http://redmine.lighttpd.net/wiki/lightt ... ModRewrite

Plusa trzeba wyescape'ować:

Kod: Zaznacz cały

^/pobierz/(.\+)$
Awatar użytkownika
ruun
Member
Posty: 1366
Rejestracja: 29 marca 2007, 21:07
Lokalizacja: Kruszwica

Post autor: ruun »

Nadal to samo - 404.
ODPOWIEDZ