Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: RewriteRule i zmienna ilość /
Forum PHP.pl > Forum > Serwery WWW > Apache
MatKus
Witam

Potrzebuję stworzyć zasadę, żeby przekierowywało mi żądania do mojego skryptu.
Obecnie wygląda to tak:
RewriteRule ^zdjecieDuze/(.{1,})/(.{1,})/(.{1,})$ pobierz.php?typ=2&idProducent=$1&symbol=$2 [QSA,L]
Co ma powodować, że zdjęcia w formacie:
http://strona.pl/zdjecieDuze/15/jakis_kod/obrazek.png jest przekierowywany do skryptu pod adresem pobierz.php?typ=2&idProducent=15&symbol=jakis_kod

I do tej pory wszystko ładnie i działa.

Ale teraz pojawia się problem, gdy symbol (drugi parametr) zawiera znaki / w różnych ilościach i konfiguracjach.
np.
aaa/a
aaa//a
aaa/a/
aaa-a
to 4 różne produkty

co generuje adresy typu http://strona.pl/zdjecieDuze/15/aaa//a/obrazek.png czy http://strona.pl/zdjecieDuze/15/aaa%2F%2Fa%2F/obrazej.png , i na czym htaccess wszystko sie wywala.

czy ktoś może mi pomóc jak zrobić zasadę, żeby to działało?
Czyli ma działać tak:

^zdjecieDuze/parametr1/parametr2/parametr3$
gdzie parametr 1 ani parametr 3 na pewno nie zawierają slashy, zresztą, parametr 3 jest ignorowany, natomiast parametr 2 ma różne wartości, na które wielkiego wpływu nie mam.

Zaznaczę, że po stronie skryptów konwertuję / na %2F ale to nic nie pomaga, a zamiana ukośnika na cokolwiek innego nie wchodzi w grę, bo to cokolwiek innego też może wystąpić (ostatnio miałem już przypadki %0D albo %0A , a nawet tekstu "\0" itp. i jedyne, z czym w zaden sposób nie mogę sobie poradzić to właśnie te ukośniki, a googlanie za znakiem
Sephirus
Jeśli tylko drugi parametr może zawierać "/" to wykorzystaj to:

Kod
RewriteRule ^zdjecieDuze/([^/]+)/(.+)/([^/]+)$ pobierz.php?typ=2&idProducent=$1&symbol=$2 [QSA,L]


smile.gif bez żadnych dodatkowych operacji %2F i podobnych wink.gif
MatKus
wielkie dzięki, dobry człowieku, już w 95% przypadków uratowałeś mi 4 litery, ale mam jeszcze jeden problem.

otóż gdy na końcu symbolu jest / robi się adres typu:
strona.pl/zdjecieDuze/12/jakiescos//obrazek.png

chodzi o 2 / obok siebie, które gdzieś po drodze się gubią i robią się jednym /

a z kolei url_encode całkiem nie mogę się pozbyć, bo w symbolach mogą też być np. cudzysłowy, ale to sobie zamieniłem na htmlspecialchars i chyba jest OK.
Sephirus
hmmm ale czekaj czekaj w adresie, który podałeś w tym parametrze drugim jest tylko ten jeden "/" na końcu nie do końca kumam gdzie "był" drugi?

Jak dasz

strona.pl/zdjecieDuze/12/jakiescos//obrazek.png

to jako parametr 2 daje Ci

jakiescos/

czy

jakiescos

questionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.