Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> RewriteRule i zmienna ilość /
MatKus
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 3
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował MatKus 11.02.2013, 14:28:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
MatKus
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 3
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:15