Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mod_rewrite] i znak zapytania
quba
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 1.10.2005
Skąd: Olesno

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


Nie, to nie kolejne pytanie o QSA (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) No nie do końca.
Mam do stworzenia bardzo dziwną regułkę, bowiem:
help.php?mode=view&u=53s10.html chcę przekierować na: help.php?mode=view&u=53&start=10

No i w tym qypadku użycie flagi QSA nie za bardzo wchodzi w grę, bo mam to s10 na koncu, z którego muszę pobrać liczbę. Co mozna w takim przypadku począć?

Dla ścisłości: gdyby nie znak zapytania, to regulka wygladalaby tak:
Rewriterule ^help.php?mode=view&u=([0-9]*)s([0-9]*).html$ help.php?mode=view&u=$1&start=$2
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




znak ? jest znakiem specjalnym i jak kazdy znak specjalny musi byc poprzedzony \ czyli \?
Go to the top of the page
+Quote Post
quba
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 1.10.2005
Skąd: Olesno

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


Dobrze wiem, że ? jest znakiem specjalnym, ale ukośnik przecież nic w tej sytuacji nie da. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) "?" Nie będzie traktowany jako zwykły string.

Ten post edytował quba 2.06.2008, 20:17:48
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ukosnik powoduje, iz w wyrazeniu regularnym znak ? traktowany jest jako zwykly znak zapytania a nie jako znak specjalny.
Tobie przeciez chodzi by znak zapytania byl traktowany jako zwykly znak - daj wiec \
Go to the top of the page
+Quote Post
quba
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 1.10.2005
Skąd: Olesno

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


No ale ile razy mam powtarzać, że w tej sytuacji to nie zadziała?
Stwórz sobie regułke:
Rewriterule ^help.php\?mode=view$ ./plik.php

A następnie wpisz help.php?mode=view w przeglądarke. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) No a po tej czynności usun \?mode=view. Zobaczysz ze za pierwszym razem wyrażenie wcale nie zostało zinterpretowane i nie wyplulo 404.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Dla ścisłości: gdyby nie znak zapytania
Sadzilem na podstawie tego ze masz problem ze znakiem specjalnym ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Skoro nie to przepraszam.
Go to the top of the page
+Quote Post
quba
post
Post #7





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 1.10.2005
Skąd: Olesno

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


no ale właśnie ten znak zapytania sprawia, że nie działa wyrażenie regularne w regułce. Generalnie jest flaga QSA, która przekazuje wartości po znaku zapytania poprzedzając je znakiem &, jednak w moim przypadku to się nie uda, gdyż w tych przekazywanych wartościach mam daną, którą muszę pobrać.
Go to the top of the page
+Quote Post
pieto
post
Post #8





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

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


No właśnie - ten sam problem, udało Ci się to przejść ?
Go to the top of the page
+Quote Post
tommy4
post
Post #9





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

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


RewriteCond %{QUERY_STRING}
RewriteRule ^mode=view&u=([0-9]*)s([0-9]*).html$ help.php?mode=view&u=$1&start=$2

coś takiego?
Go to the top of the page
+Quote Post
hateman
post
Post #10





Grupa: Zarejestrowani
Postów: 86
Pomógł: 18
Dołączył: 28.04.2008
Skąd: Poznań

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


Ja bym to zrobił bez Rewrite skoro z nim masz problemy

Kod
$array = explode("s", $_GET['u']);
$_GET['u'] = $array[0];
$_GET['start'] = $array[1];


Ten post edytował hateman 4.06.2008, 18:08:31
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 13:05