Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] Formularz GET i przekierowanie
Forum PHP.pl > Forum > Serwery WWW > Apache
Walian
Mam na stronie paginator składający się z linków oraz mini formularza typu:
Kod
Strona: [pole] [przycisk]

Dzięki czemu użytkownik może przeskoczyć do dowolnej strony.
Gdy wciśnie przycisk jest kierowany do:
Kod
article.php?name=nazwa_artykulu&page=5

Chciałbym aby w pasku adresu był link:
Kod
artykuly/nazwa_artykulu/strona-5/


Mam do tej pory zrobione przekierowanie z linków <a></a>:
Kod
artykuly/nazwa_artykulu/strona-5/

do skryptu:
Kod
article.php?name=nazwa_artykulu&page=5

gdzie w pasku adresu wciąż widnieje:
Kod
artykuly/nazwa_artykulu/strona-5/

które działa doskonale, niestety nie wiem jak zrobić by "przyjazne linki" działały również dla formularzy.

Kombinowałem z {QUERY_STRING} ale nawet nie wiem czy mam właśnie tego użyć, poza tym nie udało mi się uzyskać pożądanego efektu.

Zapomniałem napisać, że rozwiązałem to za pomocą kodu w JS, ale czy naprawdę nie ma żadnego sposobu by zrobić to bez JS? Może jakiś inny moduł do Apache?



I osobna sprawa, czy jest możliwość stworzenia odpowiedniego zestawu reguł by mod_rewrite kierował z adresów:
Kod
plik/wartosc_zmiennej1/wartosc_zmiennej2/wartosc_zmiennej3/wartosc_zmiennej4/wartosc_zmiennej5/
plik/wartosc_zmiennej1/wartosc_zmiennej2/wartosc_zmiennej3/wartosc_zmiennej4//
plik/wartosc_zmiennej1/wartosc_zmiennej2/wartosc_zmiennej3//wartosc_zmiennej5/
plik/wartosc_zmiennej1/wartosc_zmiennej2//wartosc_zmiennej4/wartosc_zmiennej5/
plik/wartosc_zmiennej1//wartosc_zmiennej3/wartosc_zmiennej4/wartosc_zmiennej5/
plik//wartosc_zmiennej2/wartosc_zmiennej3/wartosc_zmiennej4/wartosc_zmiennej5/
plik/wartosc_zmiennej1/wartosc_zmiennej2/wartosc_zmiennej3///

odpowiednio do:
Kod
plik.php?zmienna1=wartosc_zmiennej1&zmienna2=wartosc_zmiennej2&zmienna3=wartosc_zmiennej3&zmienna4=wartosc_zmiennej4&zmienna5=wartosc_zmiennej5
plik.php?zmienna1=wartosc_zmiennej1&zmienna2=wartosc_zmiennej2&zmienna3=wartosc_zmiennej3&zmienna4=wartosc_zmiennej4
plik.php?zmienna1=wartosc_zmiennej1&zmienna2=wartosc_zmiennej2&zmienna3=wartosc_zmiennej3&zmienna5=wartosc_zmiennej5
plik.php?zmienna1=wartosc_zmiennej1&zmienna2=wartosc_zmiennej2&zmienna4=wartosc_zmiennej4&zmienna5=wartosc_zmiennej5
plik.php?zmienna1=wartosc_zmiennej1&zmienna3=wartosc_zmiennej3&zmienna4=wartosc_zmiennej4&zmienna5=wartosc_zmiennej5
plik.php?zmienna2=wartosc_zmiennej2&zmienna3=wartosc_zmiennej3&zmienna4=wartosc_zmiennej4&zmienna5=wartosc_zmiennej5
plik.php?zmienna1=wartosc_zmiennej1&zmienna2=wartosc_zmiennej2&zmienna3=wartosc_zmiennej3

?
Jeśli tak to jak to zrobić?
erix
Cytat
które działa doskonale, niestety nie wiem jak zrobić by "przyjazne linki" działały również dla formularzy.

Cytat
Zapomniałem napisać, że rozwiązałem to za pomocą kodu w JS, ale czy naprawdę nie ma żadnego sposobu by zrobić to bez JS? Może jakiś inny moduł do Apache?

Nie da się. Zostaje wyłącznie JS albo sprawdzanie QUERY_STRING w RewriteCond, aby przekierować na daną podstronę na podstawie danych z formularza. Ale najlepiej byłoby to po prostu przeprojektować...

Cytat
I osobna sprawa, czy jest możliwość stworzenia odpowiedniego zestawu reguł by mod_rewrite kierował z adresów:
Kod

Nie rozumiem?
Walian
Cytat("erix")
Ale najlepiej byłoby to po prostu przeprojektować...

Na przykład jak?

Cytat("erix")
Cytat("Walian")
I osobna sprawa, czy jest możliwość stworzenia odpowiedniego zestawu reguł by mod_rewrite kierował z adresów:
Kod

Nie rozumiem?

Chodzi o to, że w wyszukiwarce nie zawsze użytkownik wypełni wszystkie pola - wtedy poprzez GET zostaną przesłane puste zmienne. Tak więc jeśli użyję JS i użytkownik wypełni tylko jedno pole (w tym przykładzie - drugie), to powstanie link:
Kod
plik//wartosc_zmiennej2////

I jak teraz napisać regułę, która przekieruje do:
Kod
plik.php?zmienna2=wartosc_zmiennej2

lub ew. do:
Kod
plik.php?zmienna1=&zmienna2=wartosc_zmiennej2&zmienna3=&zmienna4=&zmienna5=
erix
Cytat
Tak więc jeśli użyję JS i użytkownik wypełni tylko jedno pole (w tym przykładzie - drugie), to powstanie link:

To napisz skrypt taki, który po prostu nie doda pustych wartości do linka. winksmiley.jpg
Walian
Chyba nadal nie rozumiesz o co mi chodzi.
No mogę zrobić, że nie doda pustych wartości, tylko skąd wtedy mod_rewrite ma wiedzieć do jakiego linku przekierować tongue.gif?
Bo jeśli powstanie:
Kod
plik/wartosc/wartosc/

To ma przekierować do:
Kod
plik.php?zmienna1=wartosc_zmiennej1&zmienna2=wartosc_zmiennej2

a może do:
Kod
plik.php?zmienna3=wartosc_zmiennej3&zmienna5=wartosc_zmiennej5

a może do jeszcze innej kombinacji tongue.gif ?

Wiem, że mogę to zrobić np. tak:
Kod
plik/Nazwa-wartosc/Opis-wartosc/

i wtedy da radę napisać odpowiednią regułkę, która będzie wiedziała "co do czego", ale to wieśniacko wygląda ;/

A postać:
Kod
plik//wartosc////

jest czytelna dla użytkownika - wie, że wypełnił tylko drugie pole.

Skumałeś smile.gif?
erix
Tak - wtedy nie rób tego przez htaccess, tylko router w skrypcie.
Walian
Chodzi Ci o to co zaproponował qlash w tym wątku:
http://forum.php.pl/lofiversion/index.php/t58446.html
?
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.