Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> .htaccess, zmienna liczba zmiennych w adresie, Pytanie dla doświadczony praktyków, obytych z mode_rewrite
Pilsener
post
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 sadsmiley02.gif

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ąć? sciana.gif Dwa dni już nad tym myślę, bez pomocy nie dam chyba rady. Bez numerów stron jeszcze jakoś mi to wychodziło, ale jak pomyślę jeszcze o doklejaniu numerów stron to sciana.gif

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 sad.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
webdice
post
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.
Go to the top of the page
+Quote Post
envp
post
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 smile.gif
Go to the top of the page
+Quote Post
Pilsener
post
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 sadsmiley02.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 04:00