Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] i znak zapytania
Forum PHP.pl > Forum > Serwery WWW
quba
Nie, to nie kolejne pytanie o QSA 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
nospor
znak ? jest znakiem specjalnym i jak kazdy znak specjalny musi byc poprzedzony \ czyli \?
quba
Dobrze wiem, że ? jest znakiem specjalnym, ale ukośnik przecież nic w tej sytuacji nie da. smile.gif "?" Nie będzie traktowany jako zwykły string.
nospor
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 \
quba
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. 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.
nospor
Cytat
Dla ścisłości: gdyby nie znak zapytania
Sadzilem na podstawie tego ze masz problem ze znakiem specjalnym ? smile.gif

Skoro nie to przepraszam.
quba
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ć.
pieto
No właśnie - ten sam problem, udało Ci się to przejść ?
tommy4
RewriteCond %{QUERY_STRING}
RewriteRule ^mode=view&u=([0-9]*)s([0-9]*).html$ help.php?mode=view&u=$1&start=$2

coś takiego?
hateman
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];
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.