Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: .htaccess, zmienna liczba zmiennych w adresie
Forum PHP.pl > Forum > Serwery WWW > Apache
Pilsener
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
webdice
Za pomocą mod_rewrite tego nie zrobisz, obróbką takich danych musisz zająć się po stronie PHP.
envp
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
Pilsener
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.