Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] kilka parametrów GET
Forum PHP.pl > Forum > Serwery WWW > Apache
mathev19
Mam pewien problem z mod_rewrite, na chwilę obecną moje linki wyglądają tak:
http://strona.pl?event=products&first=...6&sort=desc

a chciałbym żeby wyglądały tak:
http://strona.pl/products/first,3/last,6/sort,desc

Wiem jak to zrobić na sztywno (czyli przepisywać za pomocą mod_rewrite z góry określonej ilości parametrów) np. dla 2 parametrów wygląda to tak:
[APACHE] pobierz, plaintext
  1. RewriteEngine on
  2. RewriteRule^ ([a-z]*)/([a-z]*),([0-9]*)/([a-z]*),([0-9]*)$ index.php?event=$1&$2=$3&$4=$5
[APACHE] pobierz, plaintext

Powyższe pisane z palca i nie sprawdzone więc może nie działać jak powinno snitch.gif
I właśnie tutaj rodzi się moje pytanie. Czy istnieje możliwość by przepisywać linki z nieograniczoną liczbą parametrów w jednej regule? Będę bardzo wdzięczny za pomoc, ponieważ głowię się nad tym już drugi dzień tongue.gif
nospor
Miałem identyczny problem:
http://forum.php.pl/index.php?s=&showt...st&p=417007

Skończyło się na tym, że obsługę tego zrobiłem w php. Z perspektywy czasu uważam to sa bardzo dobre rozwiązanie
thek
Jeśli masz nieograniczoną liczbę to nie ma sensu to zostawiać w htaccess. Musiałbyś mieć ilości reguł wyznaczone wzorami gdzie używalibyśmy silnię do obliczeń. Znacznie wygodniejszy jest wspomniany przez nospora plik obsługujący ścieżki. Pozwala bowiem nie tylko radzić sobie z dowolnymi ilościami parametrów, ale i ładnie je organizować pod kątem SEO. Możesz bowiem trafić na parametry pomieszane pod kątem kolejności na zasadzie, raz /a=1/b=2/c=3 , a raz /b=2/c=3/a=1 (oczywiście nie znaki równości ale choćby "/par_jeden/par2_dwa/par3_trzy" ) i dla przeglądarki będą to duplikaty bo zawierają tę samą treść. Taki plik php "poinformuje" przeglądarkę, że to jedna z wersji określonego i ma ją zaindeksować pod tamtym ( canonical address ). Można powiedzieć, że to swego rodzaju predispatcher, gdyż parsuje on adres do formy, która potem dispatcher otrzymuje na wejście.
mathev19
Dzięki chłopaki za odpowiedzi i przede wszystkim za rady. Muszę przyznać, że już sam pomyślałem o tym by to po prostu rozwiązać w PHP. Tak chyba będzie szybciej szczególnie biorąc pod uwagę to, że czas mnie goni i to niemiłosiernie tongue.gif

PS. Mam prośbę do tych, którzy wiedzą jak rozwiązać problem przedstawiony w pierwszym poście. Podajcie rozwiązanie rolleyes.gif
thek
Wystarczy, że wszystko co dostajesz przekierujesz na ów plik konwertujący. On może zrobić co się tyko da i przepchąć dalej. Możesz też go zaincludować do index.php i on wykona wszystko na starcie. Oczywiście reguła która przepychała by cuda powinna być ostatnia, by nie kolidowała z wcześniejszymi. A najlepiej by reguły wcześniejsze niepozwalałydojść do niej niepotrzebnie.
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.