Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak przekazać na szybko dodatkowo zmianną za pomocą GET do zapytania korzystającego z .htaccess ?
Forum PHP.pl > Forum > Przedszkole
maniek99
Mam takiego linka:
  1. domena.pl/poszukaj-blablabla-1


Taki mam .htaccess do niego:
  1. RewriteRule poszukaj-(.*)-(.*)$ wynik.php?co=$1&page=$2


Chciałbym czasem do mojego linka dodać dodatkowy parametr, żeby powstało coś w stylu:

  1. domena.pl/poszukaj-blablabla-1?parametr=10


Jak się przekonałem takiego parametru już nie wyświetle za pomocą metody GET.
Żeby go przekazać to muszę zmienić mój .htaccess i html na:

  1. RewriteRule poszukaj-(.*)-(.*)-(.*)$ wynik.php?co=$1&page=$2?zmienna=$3
  2. domena.pl/poszukaj-blablabla-1-10


Niestety teraz nie zadziała mi wersja w której nie podaje ostatniego paramatru, bo nie jest on obligatoryjny więc powinien
zarówno działać link z tym parametrem jak i bez.

Czy mogę jakoś w .htaccess uczynić tą 3 regułę -> -(.*)$ jako ewentualną lecz niekonieczną tzn, może być ale nie musi questionmark.gif


pitu
Dodaj dwie reguły jedną z dwoma parametrami i drugą z trzema. Z tego co wiem nie istnieje w mod_rewrite parametr opcjonalny.
maniek99
Dodałem 2 rewrite:

  1. RewriteRule poszukaj-(.*)-(.*)$ wynik.php?co=$1&page=$2
  2. RewriteRule poszukaj-(.*)-(.*)+(.*)$ wynik2.php?co=$1&page=$2&k=$3


Jednak z jakiegoś powodu link:

  1. domena.pl/poszukaj-blablabla-1+10
  2. korzysta z tej samej reguły co link:
  3. domena.pl/poszukaj-blablabla-1


Dlaczego link z '+' nie korzysta z 2 reguły ?

nospor
Zmień kolejność reguł... dość logiczne wink.gif

Poza tym po wykonaniu reguły masz zaprzestać wykonywania innych reguł - do tego służy bodajże [L]
maniek99
Po zmienieniu kolejności reguł:

  1. RewriteRule poszukaj-(.*)-(.*)+(.*)$ wynik.php?co=$1&page=$2&k=$3
  2. RewriteRule poszukaj-(.*)-(.*)$ wynik.php?co=$1&page=$2



wszystko przestaje działać (czy to z flagą L czy bez)

Link: domena.pl/poszukaj-blablabla-1

poprawnie ładuje się dopiero po odkomentowaniu 1 rewritea (z +), czyli ten link wychodzi na to, że łapie się na
każdy rewrite z podanych, zaleźnie od ich kolejności.

Jak zrobić, żeby ten link działał, tylko dla 2 reguły questionmark.gif

//EDIT
Okazało się, że ten plus to chyba jakiś znak specjalny, bo jak zamieniłem na , to wszysto działa natomiast z + nie działa.
nospor
+ określa ilosc wystąpien.

znaki specjalne poprzedza się \ czyli
\+
Crozin
Dodaj sobie flagę QSA do swojej reguły, a będziesz mógł wrzucić sobie do URLi dodatkowy parametr.
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.