![]() |
![]() ![]() |
![]() |
![]()
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
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
php pocz -> serwery
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 189 Pomógł: 0 Dołączył: 4.07.2004 Skąd: z neostrady Ostrzeżenie: (0%) ![]() ![]() |
Ten post powinien ci wyjaśnić zasadę łączenia: http://tiny.pl/fs9
Próbowałem jednak stworzyć działający przykład twojego problemu i nie udało mi się. ![]() -------------------- pozdrawiam, Adam Kubiczek
kubiczek.eu |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
niestety, ale dalej nie wiem jak to zrobic, probowalem dac {$10} oraz ${10}, a takze: [C],[N],[C,QSA] i dalej nic
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 401 Pomógł: 5 Dołączył: 14.09.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
a rozwazales przypadek ze regulka mzoe byc zle napisana, bo wg mnie tak sie wlasnie stalo. Chodzi o kropke i gwiazkdke.
Mianowicie jest ogromna roznica miedzy zapisem .* oraz .*? Wiecej informacji tutaj [edit] Ok doczytam manuala. [/edit] Ten post edytował bendi 25.10.2004, 12:32:21 -------------------- |
|
|
![]()
Post
#6
|
|
![]() 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 ![]() 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 ![]() Ten post edytował akubiczek 25.10.2004, 16:05:51 -------------------- pozdrawiam, Adam Kubiczek
kubiczek.eu |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 401 Pomógł: 5 Dołączył: 14.09.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
2 sprawy:
- gdzie w tym kodzie nalezy dodac QSA, bo z tego co mi sie wydaje aby regulka byla skopiowana trzeba to dopisac - zamiast pisac ([^,\.]+), mozna napisac (.*?),. Wywolanie ze znakiem zapytania spowoduje wlalczenie non-greedy (niby roznica nieznaczna, ale o ile czytelniejsza - pobierz wszystko do pierwszego napotkanego przecinka i po sprawie), wiecej na ten temat w drugiej czesci mojego arta o regexpach Wtedy cala regulka przyjmie postac: 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 Prawda ze ladniej ;> Ten post edytował bendi 26.10.2004, 08:45:44 -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 189 Pomógł: 0 Dołączył: 4.07.2004 Skąd: z neostrady Ostrzeżenie: (0%) ![]() ![]() |
ślicznie
![]() QueryStringAppend (QSA) nie używałem, bo nie doczytałem jak to się dokładnie zachowuje ![]() No, myślę że rozwiązaliśmy problem kolegi Wojto ![]() Ten post edytował akubiczek 26.10.2004, 09:04:25 -------------------- pozdrawiam, Adam Kubiczek
kubiczek.eu |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat(akubiczek @ 2004-10-26 10:03:08) No, myślę że rozwiązaliśmy problem kolegi Wojto ![]() zgadza sie ![]() juz poradzilem sobie wczesniej poprzez zmniejszenie liczby parametrow, ale klient dodal nowe, wiec jednak musialem z tego skorzystac ps. ten sposob podany przez ciebie bendi u mnie nie dziala, nie znajduje strony, wyswietla 404. ten Kod RewriteRule ([^,\.]+),(.*) sz_slowo_kluczowe=$2 [C] dziala jak nalezyRewriteRule ([^,\.]+),(.*) $1&sz_nazwa=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_branza=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_wojewodztwo=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_powiat=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_miejscowosc=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_telefon=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_ulica=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_osob=$2 [C] RewriteRule ([^,\.]+),(.*) $1&strona=$2 [C] RewriteRule (.*)\.html szukaj.php?$1 // edit: jednak nie dziala jak nalezy, bo wszystkie nastepne linki w tym pliku (dokladniej te zawierajace przecinek) juz nie obsluguje wcale przykladowy kawalek pliku: Kod RewriteRule ^firma,([0-9]+).html+ firma.php?id=$1 RewriteRule ^szukaj.html+ szukaj.php RewriteRule ([^,\.]+),(.*) sz_slowo_kluczowe=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_nazwa=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_branza=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_wojewodztwo=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_powiat=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_miejscowosc=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_telefon=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_ulica=$2 [C] RewriteRule ([^,\.]+),(.*) $1&sz_osob=$2 [C] RewriteRule ([^,\.]+),(.*) $1&strona=$2 [C] RewriteRule (.*)\.html szukaj.php?$1 [CODE]RewriteRule ^dodaj.html+ dodaj.php?rejestracja=1 RewriteRule ^aktualizuj.html+ dodaj.php?rejestracja=2 RewriteRule ^edytuj,([0-9]+).html+ edytuj.php?id=$1 RewriteRule ^usun,([0-9]+).html+ usun.php?id=$1 w tym fragmencie tych dwoch: Kod RewriteRule ^edytuj,([0-9]+).html+ edytuj.php?id=$1 RewriteRule ^usun,([0-9]+).html+ usun.php?id=$1 juz nie obsluguje jakies sugestie? Ten post edytował wojto 31.10.2004, 21:07:04 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.06.2025 - 08:30 |