![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
No i kolejny z serii dziwnych problemów. W związku z tym że chciałbym wprowadzić "przyjazne" linki postanowiłem, poszukać, poczytać i wymyślilem coś takiego:
tylko teraz powiedzcie mi co zrobić jak bede potrzebował 3 zmienne do index.php ? 3 rózne reguły napisać trzeba ? czy wtedy odwołać index.php?strona=cos&inna=cosinnego&jeszczeinna=cos ? i co z przesyłaniem czegoś _getem ? Bo nie bardzo to rozumiem.. jak by mogł ktoś to "rozrysować" normalnie to byłbym wdzieczny.. ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Kod RewriteRule ^/?([a-z0-9]*)/([a-z0-9]*)/([a-z0-9]*)/ $ index.php?a=$1&b=$2&c=$3 [NC,L] RewriteRule ^/?([a-z0-9]*)/([a-z0-9]*)/ $ index.php?v=$1&g=$2[NC,L] RewriteRule ^/?([a-z0-9]*)/ $ index.php?z=$1 [NC,L] http: // www. w.pl/aa/aa/ - apache przypisze ten adres do drugiej regułki (wstawiłem spacje bo forum parsuje linki na tagi html ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
Czyli mam rozumieć że można przypisać inne parametry dla każdej liczby zmiennych ?
a można zrobić coś w tym stylu ? RewriteRule ^/?([a-z0-9]*)/ $ index.php?z=jakasstala&b=$1 [NC,L] Bo nie bardzo chce mi to działać.. Jeszcze jedno pytanie można zrobić za pomocą htacces żeby przy wpisaniu adresu strony wyswietlał ./index.html ale żeby pozwolił na otworzenie www.calyadres.pl/index.php (cały adres) ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
I słusznie że nie chce ci to działać, bo składnia jest błędna. Znak zapytania przed nawiasem oznacza warunek, gwiazdka oznacza zero lub więcej i nie można ustawić dla zakresu znaków (a-z0-9). Poprawnie powinno to wyglądać tak:
Kod RewriteRule ^/([\w]+)/ $ index.php?z=jakasstala&b=$1 [NC,L]
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze jedno pytanie, potrzebował bym jeszcze takie cudo jeśli są literki to:
RewriteRule ^/([a-z]*)/ $ index.php?b=$1 [NC,L] a jeśli cyferki to RewriteRule ^/?([0-9]*)/ $ index.php?d=$1 [NC,L] Czy takie coś przejdzie ? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kod RewriteRule ^/([\w]+)/$ index.php?b=$1 [NC,L] RewriteRule ^/?([\d]+)/$ index.php?d=$1 [L] Po co wstawiasz gwiazdki po zakresie znaków? Sprawdź czy zadziała. W sumie powinno, dlatego że zawsze jest najpierw dopasowywanie adresu po lewej stronie i jeżeli się coś nie będzie zgadzać, to wówczas weźmie pod uwagę kolejną regułkę etc. Ten post edytował by_ikar 28.10.2011, 12:50:33 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
problemów ciąg dalszy, jak by ktoś mogł mi pomoc z tym bo nie moge sobie poradzic
RewriteBase / RewriteRule ^/?([a-z]*)/$ index.php?strona=$1 [NC] RewriteRule ^/?([a-z]*)/?([0-9]*)/$ index.php?strona=$1&item=$2[NC] RewriteRule ^/kategoria-?([0-9]*)/$ index.php?kategoria=$1[NC] RewriteRule ^/kategoria-?([0-9]*)/podkategoria-([0-9])/$ index.php?kategoria=$1&podkategoria=$2[NC,L] Pierwsze 2 chodzią tylko mam problem z 2 ostatnimi bo chyba są traktowane tymi pierwszymi. Czy to da się jakoś pogodzić ? Chodziło mi o to żeby jeśli jest w adresie słowo 'kategoria' było traktowane tymi 2 ostatnimi ? Ten post edytował Mayka 23.11.2011, 22:08:16 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Brniesz w rozwiązania przestarzałe, skomplikowane i mało wydajne.
Dzisiaj używa się tylko jednej reguły, która przepisuje dowolny adres a następnie jest on obrabiany po stronie php za co odpowiada tak zwany router. Przykład: 1. Mamy adres: strona.pl/galeria/fotki;z;wakacji-2,456.html 2. Zostaje on przepisany na: strona.pl?adres=galeria/fotki;z;wakacji-2,456.html 3. Teraz do akcji wkracza nasz router który obrabia zmienną $_GET['adres'] i otrzymujemy tablicę parametrów: moduł = galeria tytuł = fotki z wakacji id = 456 page = 2 4. Tworzenie adresów odbywa się podobnie: Zalety: - nie musisz się babrać w .htaccess - tworzenie reguł w PHP jest prostsze, elastyczniejsze i szybsze - w każdej chwili można zmienić koncepcję adresów dokonując zmian jedynie w pliku cfg routera (przekazywane i odbierane parametry zostają bez zmian) Najlepiej utworzyć sobie jakiś router standardowy działający na zasadzie: domena/moduł/słowa;kluczowe-nr_strony,parametr1,parametr2.html A potem rozbudować system o definiowanie własnych routerów. Można też skorzystać z gotowych rozwiązań, których nie brak. Najprostsze systemy po prostu zastępują znaki & i = tworząc coś w stylu: strona.pl/klucz1-wartosc1;klucz2-wartosc2;klucz3-wartosc3 Widziałem już serwisy gdzie było kilkaset wpisów w .htaccess i weź teraz coś tam zmień, popraw, debuguj... |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
Nie słyszałem o takim rozwiązaniu, ale całkiem ciekawie sie to zapowiada, rozumiem że do adresu można wtedy dodać nazwe pobieraną np z mysql ?
A mogłbyś podać jakiegoś linka do takich gotowych rozwiązań ? Bo 90% tego co znalazłem to pod jomle dedykowane. I dosyć skomplikowane, a mnie wystarczy cos prostego ![]() Ten post edytował Mayka 25.11.2011, 09:16:37 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tutaj na forum masz kilka nawet gotowych rozwiązań, dość prostych. Htaccess ci działa nie prawidłowo, bo używasz go w nieprawidłowy sposób. Największym chyba błędem jest używanie tej gwiazdki, która łapie zero lub więcej znaków, powodując tym samym łapanie nawet pustego adresu. Następnie przed nawiasem umieszczasz znak zapytania, robiąc z tego wyrażenia, wyrażenie opcjonalne, czyli znów pierwsza linijka htaccess będzie łapać wszystko. Przeczytaj jakieś podstawowe informacje odnośnie htacces, oraz odnośnie wyrażeń regularnych i dopiero twórz.
htaccess: http://eriz.pcinside.pl/weblog/mod_rewrite...wiazac-208.html regexp: http://wyrazeniaregularne.wordpress.com/ (wyrażenia w takiej w sumie podstawie, aby tylko załapać co po co i dlaczego) Poczytaj o wyrażeniach, poczytaj o htaccess. Podstawy na prawdę nie są trudne, można opanować to wszystko w jeden dzień, bez większych problemów. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Z gotowych rozwiązań to wiem, że z CMSów oparty jest o to Drupal natomiast z frameworków - Zend. Pewnie też bez problemu można wyguglać kilka klas do routingu, nawet n tym forum:
http://forum.php.pl/lofiversion/index.php/t41020.html |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
Dzieki za pomoc, ta strona która dał ikar jest bardzo pomocna, w końcu ktoś wpadł na pomysł rozpisania tego mod_rewrite
![]() ![]() A jeszcze walcze z tymi htacces takie coś żeby zrobić:
bo to:
działa, ktoś może mi powiedzieć dlaczego ? Ten post edytował Mayka 27.11.2011, 15:04:05 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:36 |