![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam podany kod w pliku .htaccess: Kod RewriteRule ^szukaj,(.*),(.*),([0-9]+),([0-9]+),(.*),(.*),(.*),(.*),(.*),([0-9]+).html+ szukaj.php?sz_slowo_kluczowe=$1&sz_nazwa=$2&sz_branza=$3&sz_wojewodztwo=$4&sz_powiat=$5 jak widac na zalaczonym obrazku liczba parametrow wynosi 10&sz_miejscowosc=$6&sz_telefon=$7&sz_ulica=$8&sz_nr_domu=$9&strona=$10 W czym problem. Nie przesyla parametru $10. Zamiast niego dostaje wartosc parametru $1 plus 0 Czy jest mozliwosc, aby odczytac wartosc parametru nr 10? W dokumentacji jest napisane cos takiego: Cytat "Back-references are $N (N=0..9) identifiers which will be replaced czyli parametry moga byc od 0 do 9by the contents of the Nth group of the matched Pattern." Jak uzyskac dostep do parametru $0, ktora czesc linka to bedzie? gdzies znalazlem inny cytat, zeby: Cytat use multiple RewriteRule statements chained together [C] if you need ale nie wiem co da to [C]more. z gory dzieki za pomoc. Ten post edytował wojto 23.10.2004, 12:48:40 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 189 Pomógł: 0 Dołączył: 4.07.2004 Skąd: z neostrady Ostrzeżenie: (0%) ![]() ![]() |
Bendi, reguła jest dobra tylko naprawdę jest tak, że mod_rewrite obsługuje max. do 9 parametrów. Poza tym regexpy mod_rewrite mają kilka drobnych różnic w stosunku do tych z php.
Wojto: chyba nie zapoznałeś się z postem, który ci wskazałem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie masz używać żadnego {$10} ponieważ N jest maks. 9. Musisz za to pokombinować z kolejnymi zamianami, tak jak w przykładzie. Schemat działania jest taki: 1. bierzesz URLa i zamieniasz pierwszy parametr, a wszystkie pozostałe kopiujesz [C,QSA] 2. powtarzasz krok 1 dla wszystkich parametrów chodzi o to, że w jednej regule zamieniasz tylko jeden parametr (możesz oczywiście od razu zamienić 9, ale dla uproszczenia róbmy to kolejno). Dla 10 parametrów tworzysz 10 regułek, w których używasz tylko parametru $1 . Każda następna regułka dostaje efekt pracy swojej poprzedniczki. Nie wiem jak to inaczej wytłumaczyć. W wolnej chwili postaram ci się napisać działający przykład. ...kilka godzin później.... Masz: Kod RewriteEngine on RewriteRule ([^,\.]+),(.*) p1=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p2=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p3=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p4=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p5=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p6=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p7=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p8=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p9=$2 [C] RewriteRule ([^,\.]+),(.*) $1&p10=$2 [C] RewriteRule (.*)\.html szukaj.php?$1 Piwo (IMG:http://forum.php.pl/style_emoticons/default/Rkingsmiley.png) Ten post edytował akubiczek 25.10.2004, 16:05:51 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 08:19 |