Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny] mod_rewrite, .htaccess
Forum PHP.pl > Forum > PHP > Frameworki
webdepsh
Mam problem z kontrukcja pliku .htaccess, obecnie wyglada tak:
Kod
Options FollowSymLinks
RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)?/?([a-zA-Z0-9]+)?/?$ index.php?controller=$1&action=$2 [L]


Obsługuje mi odpowiednio kontroler i akcję. np. Kontroler/akcja. I teraz potrzebuję przerobić to tak żeby była możliwa obsługa innych zmiennych url, nie znam ich ilości, i nazw, po prostu zawsze musze miec mozliwosc ich odczytania. Napisanie http://127.0.0.1/framework/?a=4 i później w kodzie print $_GET['a']; nie działa.. .htaccess obcina mi reszte zmiennych.


Proszę o pomoc! smile.gif
Sephirus
Kod
RewriteRule ^([a-zA-Z0-9]+)?/?([a-zA-Z0-9]+)?/?$ index.php?controller=$1&action=$2 [L,QSA]
rocktech.pl
Witam.

Cytat
$_GET['a']; nie działa


[APACHE] pobierz, plaintext
  1. Options FollowSymLinks
  2. RewriteEngine On
  3. #bi QSA ci zabrakło
  4. RewriteRule ^([a-zA-Z0-9]+)?/?([a-zA-Z0-9]+)?/?$ index.php?controller=$1&action=$2 [L,QSA]
[APACHE] pobierz, plaintext


Po mod_rewrite obsłuży ci jedynie do 9 zmiennych. Możesz przekazać sobie np. ostatni parametr jako string /controller/akcja/id/string/string/string i parsować go po stronie PHP. Poszukaj pod hasłem router.
webdepsh
Cytat(Sephirus @ 9.07.2012, 15:37:51 ) *
Kod
RewriteRule ^([a-zA-Z0-9]+)?/?([a-zA-Z0-9]+)?/?$ index.php?controller=$1&action=$2 [L,QSA]


Dzięki wielkie, nie wiedziałem o QSA smile.gif

A gdybym chciał żeby wszystkie konstrukcje wygladaly tak: kontroler/akcja/id/5/id2/18 itd ? Jak skonstruować takie wyrażenie? bo teraz to mam ?id=5&id2=18 i oczywiście niezależnie od ilości zmiennych.
Sephirus
W tym temacie popieram w pełni przedmówcę... najlepiej jest wtedy dać:

Kod
^.+$ index.php [L,QSA]


I przekierować wszystko na index.php (oczywiście foldery ze statyką czyli grafika, skrypty js itp trzeba zaopatrzeć wtedy w .htaccess z rewriteEngine off).

W index.php sprawdzasz jaki jest adres i sobie odpowiednio go splitujesz (explode()).

Możesz sprawdzać $_SERVER['REQUEST_URI'] na przykład - ale metod jest wiele. Poczytaj o tym routerze wink.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.