Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]RewriteRule zmienne zmienne i ich wartości
Forum PHP.pl > Forum > Przedszkole
!*!
Wiem, pokrecony tytuł, ale mam taki problem:

adres strony to:

Kod
www.domena.pl/index.php?zmienna1=wartosc1


Czsami jest też taki adres:

Kod
www.domena.pl/index.php?zmienna1=wartosc2


albo

Kod
www.domena.pl/index.php?zmienna2=wartosc2



I teraz jak mam to poucinać w RewriteRule, tak aby nic się nie gryzło.

Kod
([a-z0-9]+),([a-z0-9]+)$ /index.php?$1=$2


Tylko jak mogę zrobić jeśli w adresie jest więcej niż 1 zmienna, za każdym razem mam dopisać to w RR?

A co jeśli ktoś wpisze zły adres to wyskoczy błąd braku sterony, teraz mam że jest przekierowany przez php do strony z informacją... można to jakoś zrobić z RR?
Lion_87
No niestety chyba musisz sie bawić i wpisywać wszystkie możliwości.

A z błedami to:
Kod
# dla błędu 404
ErrorDocument 404 /nieznalezionopliku.html

# dla błędu 500
ErrorDocument 500 /bledy/500.html

    * 401 - Authorization Required (wymagana autoryzacja)
    * 400 - Bad request (niepoprawne żądanie)
    * 403 - Forbidden (dostęp zabroniony)
    * 500 - Internal Server Error (wewnętrzny błąd serwera)
    * 404 - File not found (nie znaleziono pliku)


lecz nie wiem czy o to Ci chodzilo.
!*!
Wiem jak działają błedy, ale chodziło mi o błedy rodzaju... em dam to na przykładzie:

includuje pliki:

  1. <?php
  2. if(zabezpieczgetpost(asd == 'start') { include('go/startmenu.php');}
  3. else if(zabezpieczgetpost(asd == 'mail') { include('go/mail.php');}
  4. else if(zabezpieczgetpost(asd == "poczekalnia") { include("go/poczekalnia/poczekalnia.php");}
  5. else if(!isset(asd)) { include("go/startmenu.php");}
  6. else {  header('Location: http://'.$_SERVER['SERVER_NAME'].'/'start-lista);}
  7. ?>


Czyli jeśli w asd nie występowało "start", mail itp. to zostało przekierowanie na adres poątkowy, a teraz po zastosowaniu RR wyskakuje błąd 404 ...
zulus
W tym wypadku nie widzę potrzeby używania rewrite rule jeżeli masz url postaci plik.php?zmienna=wartość . W tym wypadku pobierasz $_GET['zmienna'] i sprawdzasz w plik.php, jeżeli chcesz tylko zmieniać nazwę pliku przy pomocy rewrite rule to użyj:

Kod
RewriteRule ^staryplik.php    nowyplik.php   [QSA]


Osobiście używam takiej kostrukcji:
Kod
RewriteRule ^(.*?)$ index.php5?argStr=$1    [QSA]


I parsuje w index.php cały URL który mam w $_GET['argStr']
!*!
Tak tylko widzisz, czasami link choć nie musi wyglada w takiej postaci:

Kod
plik.php?zmienna=wartość&aaa=111&vvv=232

lub

plik.php?zmienna=wartość&aaa=111&vvv=232&asd=34342&dfdf=1


lub jeszcze jakiejś innej, i co wtedy? Właśnie nie wime jak to optymalnie napisać aby nie było takiego burdleu w urlu.
zulus
Zapisuj jako zmienna/wartość/zmienna2/wartość2

potem argStr przy pomocy explode dzielisz przez '/' i łączysz w tablicę $args['zmienna'] = wartość;

dzięki temu nie pojawia Ci się url typu http://adres.pl/plik.php?zmienna=wartość tylko:
http://adres.pl/zmienna/wartość/zmienna/wartość

Niektóre wyszukiwarki wciąż mają problemy z url'ami ze zmiennymi poza tym ładniej to wygląda tongue.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.