marcini Napisano Lipiec 27, 2006 Zgłoszenie Share Napisano Lipiec 27, 2006 Witam! Prosze o pomoc w napisaniu reguly mod_rewrite. Chodzi o to, zeby link w stylu: http://domena.pl/index.php/parametr1/parametr2/parametr3 mogl byc wywolywany jako: http://domena.pl/parametr1/parametr2/parametr3 Dodatkowo, musi to byc kompatybilne z tradycyjnym sposobem wywolywania strony: http://domena.pl/index.php?zm1=parametr1&a...p;zm3=parametr3 Wykombinowalem cos takiego: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !\. RewriteRule ^([^-]+)/([^-]+)/([^-]+)/([^-]+)$ index.php?module=$1&action=$2&$3=$4 [L,NC,NS] RewriteRule ^([^-]+)/([^-]+)/([^-]+)/([^-]+)/([^-]+)/([^-]+)$ index.php?module=$1&action=$2&$3=$4&$5=$6 [L,NC,NS] RewriteRule ^([^-]+)/([^-]+)/([^-]+)/([^-]+)/([^-]+)/([^-]+)/([^-]+)/([^-]+)$ index.php?module=$1&action=$2&$3=$4&$5=$6&$7=$8 [L,NC,NS] Pierwsze 2 parametry maja stale nazwy, a pozostale sa podawane jako zmienna/wartosc. Dziala, ale tylko jesli mam 3 parametry: http://domena.pl/wartosc1/wartosc2/zm3/wartosc3 Jak doloze nastepna zmienna: http://domena.pl/wartosc1/wartosc2/zm3/wartosc3/zm4/wartosc4 to mam pusta strone. A wg mnie kolejne parametry powinny zalatwic kolejne regulki. Co mam zmienic? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ArkadiuszB Napisano Lipiec 29, 2006 Zgłoszenie Share Napisano Lipiec 29, 2006 Troche nie eleganckie ale można tak zrobić RewriteRule (.*)/(.*)/(.*)/(.*)/(.*) index.php?get1=$1&get2=$2&get3=$3&get4=$4&get=$5 [L] RewriteRule (.*)/(.*)/(.*)/(.*) index.php?get1=$1&get2=$2&get3=$3&get4=$4 [L] itd. do najniższego Oczywiście swoje parametry podstaw Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
marcini Napisano Lipiec 31, 2006 Autor Zgłoszenie Share Napisano Lipiec 31, 2006 OK, jak zamienie kolejnosc i dluzsze linie dam na poczatek, to wszystko sie wyswietla jak podaje adresy bez index.php: http://domena.pl/parametr1/parametr2/zm3/parametr3 Teraz mam tak: RewriteCond %{REQUEST_URI} !\. RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4&$5=$6 [L] RewriteRule (.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4 [L] Ale pojawil sie inny problem: jak dodam index.php do linka: http://domena.pl/index.php/parametr1/parametr2/zm3/parametr3 to mam pusta strone. A tak nie moze byc, bo serwis juz jakis czas istnieje i nie chce zeby sie stare linki do niego zdezaktualizowaly. Myslalem ze RewriteCond to zalatwi, odrzucajac linki zawierajace kropke, ale jednak nie dziala. Wiec, co mam jeszcze zmienic? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ArkadiuszB Napisano Sierpień 1, 2006 Zgłoszenie Share Napisano Sierpień 1, 2006 Nie sprawdzałem tego ale może zobacz tak RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/(.*) $1?get1=$2&get2=$3&get3=$4&get4=$5&get=$6 [L] Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
marcini Napisano Sierpień 1, 2006 Autor Zgłoszenie Share Napisano Sierpień 1, 2006 To rozwiazuje problem z indexem, ale tylko dla malej ilosci parametrow. To moze napisze po kolei, co sie dzieje przy regulach z poprzedniego posta. Jak pisze: RewriteRule (.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4 [L] To dziala bez index.php, ale z indexem (czyli po staremu) nie dziala. Wiec dodaje wczesniej: RewriteCond %{REQUEST_URI} !\. i zaczyna dzialac tez z indexem, bo index.php zawiera kropke. Ale dlaczego, jesli przed pierwsza regula dodam nastepna: RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4&$5=$6 [L] to linki z index.php przestaja dzialac? Przeciez nadal chyba powinno wykluczac linki z kropka? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ArkadiuszB Napisano Sierpień 1, 2006 Zgłoszenie Share Napisano Sierpień 1, 2006 Napisz dokładnie jakie masz adresy z parametrami i jaki chcesz osiągnąć adres docelowy bo się pogubiłem troche Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
marcini Napisano Sierpień 1, 2006 Autor Zgłoszenie Share Napisano Sierpień 1, 2006 Kazda strone serwisu mozna wyswietlic, podajac adres: http://domena.pl/index.php?module=wartosc1...mp;zm3=wartosc3 lub http://domena.pl/index.php?module=wartosc1...mp;zm4=wartosc4 Serwis ma zaimplementowany mechanizm, dzieki ktoremu mozna zamiast powyzszych linkow podac bardziej przyjazne: http://domena.pl/index.php/wartosc1/wartosc2/zm3/wartosc3 lub http://domena.pl/index.php/wartosc1/wartos...c3/zm4/wartosc4 Jak widac, pierwsze 2 zmienne maja zawsze takie same nazwy, wiec podaje tylko ich wartosc, a kazda nastepna jest podawana jako nazwa_zmiennej/wartosc. Takie linki stosuje aktualnie. I dalej chce wykotrzystac mod_rewrite, zeby sie pozbyc z URL-a index.php: http://domena.pl/wartosc1/wartosc2/zm3/wartosc3 lub http://domena.pl/wartosc1/wartosc2/zm3/wartosc3/zm4/wartosc4 Ale jednoczesnie ma zostac zachowana mozliwosc wywolywania stron przy uzyciu dwoch pierwszych sposobow. Mam nadzieje, ze bedziesz potrafil mi pomoc. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ArkadiuszB Napisano Sierpień 2, 2006 Zgłoszenie Share Napisano Sierpień 2, 2006 Powinno działać RewriteEngine On RewriteRule ?index.php?/(.*)/(.*)/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4&$5=$6 [L] RewriteRule ?index.php?/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4 [L] te znaki zapytania przed i po index mają być. Jeżeli to nie zadziała to zerknij w tą: RewriteEngine On RewriteRule index.php/(.*)/(.*)/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4&$5=$6 [L] RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4&$5=$6 [L] RewriteRule index.php/(.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4 [L] RewriteRule (.*)/(.*)/(.*)/(.*) index.php?module=$1&action=$2&$3=$4 [L] To jest cała reguła, nic nie dodawaj. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
marcini Napisano Sierpień 4, 2006 Autor Zgłoszenie Share Napisano Sierpień 4, 2006 Drugi sposob zadzialal co do linkow, ale po jego zastosowaniu nie laduja mi sie obrazki ustawiane w CSS (np. tlo). Jak mam cos takiego w zewnetrznym arkuszu stylow: div#naglowek { width: 770px; height: 100px; background: url('grafika/logo_tlo.jpg'); } to tlo sie nie zaladuje. Dawno z niczym nie mialem tyle problemow co z mod_rewrite Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ArkadiuszB Napisano Sierpień 4, 2006 Zgłoszenie Share Napisano Sierpień 4, 2006 Teraz tak patrze to pierwsza regula nie ma prawa dzialac bo znaki zapytania powinny byc przed i za "/". Co do arkuszy stylów to po prostu wstaw pelny adres do css'ów czyli np. www.strona.pl/style.css bo zapewne masz <link href="style.css" rel="stylesheet" type="text/css" /> bez pelnego adresu W samym stylu tez podaj pelny adres i nie bedzie problemu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
marcini Napisano Sierpień 5, 2006 Autor Zgłoszenie Share Napisano Sierpień 5, 2006 To nie tak, sam arkusz css sie laduje (bo mam bezwzgledny adres) i cale formatowanie wygladu strony jest ok, tylko obrazki tla sie nie laduja. A przy wczesniejszych probach takich problemow nie bylo. A co dokladnie chciales osiagnac tymi znakami "?" ? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się