Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> rewrite rule, numer parametru wiekszy niz 9
wojto
post
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
&sz_miejscowosc=$6&sz_telefon=$7&sz_ulica=$8&sz_nr_domu=$9&strona=$10
jak widac na zalaczonym obrazku liczba parametrow wynosi 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
by the contents of the Nth group of the matched Pattern."
czyli parametry moga byc od 0 do 9
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
more.
ale nie wiem co da to [C]

z gory dzieki za pomoc.

Ten post edytował wojto 23.10.2004, 12:48:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
akubiczek
post
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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 08:19