![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, piszę skrypt artykułów i wpadłem na poroniony pomysł zastosowania w nim (opcjonalnie, do wyboru przez użytkownika) przyjaznych adresów.
Uruchomiłem moda, odpaliłem przepisywanie linków i wszystko cacy, ale jest kilka problemów: Strona główna+ porcjowanie mojastrona.pl/artykuly/index.php mojastrona.pl/artykuly/index.html mojastrona.pl/artykuly/index.php?a=2 mojastrona.pl/artykuly/index,2.html Napisałem prostę regułę, która mi to zmienia: RewriteRule ^index.htm$ index.php [L] ale chciałbym aby user miał możliwość zmiany nazwy pliku z artykułami, np. na taki: mojastrona.pl/artykuly/jego_arty.php Da się jakoś dobrać regułę, czy trzeba zczytywać nazwę pliku i generować .htaccess dynamicznie przy każdym ładowaniu strony? Filtrowanie i sortowanie mojastrona.pl/artykuly/index.php?kat=kategoria&sort=rozmiar&a=2 mojastrona.pl/artykuly/kategoria,rozmiar,3.html napisałem znów regułę i działa, ale znów sukces połowiczny, bo: - co gdy user wybierze tylko kategorię, albo tylko sortowanie? Typu: mojastrona.pl/artykuly/index.php?kat=kategoria - pokaż tylko art. z kategorii "kategoria" mojastrona.pl/artykuly/index.php?sort=rozmiar - sortuj wg rozmiaru Albo nie ma numeru strony? Dodatkowo będzie jeszcze rosnąco/malejąco. Jak wpisze regułę: - sortowanie/filtr/numer strony to gdy jest tylko sortowanie/numer_strony to nie działa ![]() Jak rozwiązać ten problem? Wyświetlanie artykułów: Zależy mi bardzo na tym, aby adres do artykułu wyglądał tak: mojastrona.pl/artykuly/tytul-artu.html (tytuł ma być unikalny) I znów prosta reguła działa, ale gdy mam: mojastrona.pl/artykuly/tytul-artu,2.html - strona druga artykułu mojastrona.pl/artykuly/tytul-artu,kom,2.html - ale tu już strona druga, ale do komentarzy do tego artykułu Jak to jakąś wspólną koncepcją ogarnąć? ![]() ![]() Podsumowując: zmienna1/zmienna2/zmienna3 - nie dość że np. zmienna 2 nie musi wcale w adresie występować, to jak sprawić, aby przepisywać ją na właściwą nazwę? Przecież jak zrobię: plik-artykuly,filtr-kategoria1,kolejnosc-rosnaco,strona-2.html - to ładny adres przestaje być ładny i niewiele się różni od: artykuly.php?filtr=kategoria1&kolejnosc=rosnaco&strona=2 ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Za pomocą mod_rewrite tego nie zrobisz, obróbką takich danych musisz zająć się po stronie PHP.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie - najlepszą opcją, która ZAWSZE będzie działała jest przekierowanie wszelkiego ruchu na wywołania serwera (oprócz wywołania na realne pliki) do np. index.php i tam skonstruowanie sobie prostego Routera, który kieruje ruchem
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Ok, wpadłem jeszcze na taki pomysł (patrząc na linki na money.pl i nie tylko), czy nie można by połączyć wyrażeń regularnych z różnymi separatorami, aby w mode_rewrite zrobić przepisanie w tym stylu:
mojastrona.pl/artykuly/tytul-artykulu-dowolnego;arty_2.html na: mojastrona.pl/artykuly/index.php?art=tytul-artykulu-dowolnego&a=2 (artykuł strona druga) Lub mojastrona.pl/artykuly/opis,smiecie-rupiecie,malejąco;filtr_3.html na: mojastrona.pl/artykuly/index.php?sort=opis&kat=smiecie-rupieci&poz=malejaco&a=3 (strona 3-cia, sortowanie kategorii "smiecie" wg opisów, malejąco) Chodzi mi o to, aby: - wszystko co jest pomiędzy / a ; było traktowane jako wartości zmiennych oddzielone przecinkami - pomiędzy ; a _ to klucz, dzięki któremu przypiszemy właściwe wartości właściwym nazwom zmiennych (np. dla "filtr" będą przepisywane 3 zmienne: sort, kat i poz, dla art tylko tytuł artykułu) - a wszystko po _ to numer strony, jedna wartość, jedna nazwa W dobrą stronę kombinuje? Da się to w ogóle tak zrobić, czy sobie odpuścić mode_rewrite'a? Ciężko mi z tego zrezygnować, bo napisałem już kupę kodu, co mi te ładne linki + słowa kluczowe generuje ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:00 |