Strona 1 z 1

Lighty i rewrite

: 31 maja 2009, 01:12
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?

: 31 maja 2009, 02:26
autor: ponton
A na co ma się przepisywać ta czwarta reguła?

: 31 maja 2009, 08:40
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.

: 31 maja 2009, 15:44
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"

: 31 maja 2009, 17:26
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.

: 31 maja 2009, 18:26
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/(.+)$

: 31 maja 2009, 19:58
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.

: 31 maja 2009, 23:20
autor: ponton
http://redmine.lighttpd.net/wiki/lightt ... ModRewrite

Plusa trzeba wyescape'ować:

Kod: Zaznacz cały

^/pobierz/(.\+)$

: 01 czerwca 2009, 20:27
autor: ruun
Nadal to samo - 404.