Avatarus
13.02.2016, 11:27:16
Witam
Mam taki formularz wyszukiwania
<form action="/index.php" method=get id="wyszukaj"> <input type="hidden" name=metoda value=szukaj> <input type=text id="project" name=nazwa size=10 placeholder="Wpisz nazwę szukanej rośliny" /> <input type="hidden" id="project-id" />
<a id="loop-icon" onclick="wyszukaj_submit();"></a>
Chciałbym jednak żeby po kliknięciu wyszukaj link wyniku nie wyglądał tak: index.php?metoda=szukaj&nazwa=borówka
tylko tak: szukaj-borówka
Jak mam to zarobić?
Podejrzewam że przez htacccess
dzięki za pomoc
trueblue
13.02.2016, 11:34:13
Avatarus
13.02.2016, 11:45:48
no dobrze, zatem dodając to do htaccess
RewriteRule ^szukaj/([^/\.]+)$ index.php?metoda=szukaj&nazwa=$1
jak wpisze w adresie szukaj/borówka to działa fajnie
ale jak teraz zmusić żeby klikając na wyszukaj adres zmienił się na szuka/borowka a nie index.php?metoda=szukaj&nazwa=borówka
trueblue
13.02.2016, 11:47:34
Czytałeś cały artykuł? Jest tam kod php odpowiedzialny za to.
Avatarus
13.02.2016, 11:49:21
tak ale tu jest przekierowanie header, a wolałbym uniknąć podwójnego ładowania strony, nie da się tego zrobić z poziomu htacccess?
trueblue
13.02.2016, 11:55:51
Da się, ale w .htaccess również było podwójne przekierowanie.
Zresztą .htaccess raczej do tego nie służy, to aplikacja ma wygenerować friendly url, a .htaccess ma przetworzyć go na brzydki.
Avatarus
13.02.2016, 12:31:57
a czy htaccess nie jest bardziej wydajne? "zaskakuje" przez całym PHP, nie wykonuje zbędnych operacji jakie moja strona generuje przy przyładowaniu (sesje, cookies itp)
Pozatym google chyba nie za bardzo "lubi" strony z przeładowaniem
będę wdzięczny za pomoc ze zrobieniem tego z poziomy htaccess
trueblue
13.02.2016, 12:47:01
Tak jak pisałem w przypadku użycia .htaccess też byłoby podwójne przekierowanie.
Jeśli chcesz bez podwójnego przekierowania, to musisz to zrobić w js. Na submit wprowadzić do formularza akcję: /wartosc_pola_bez_polskich_znakow
Avatarus
13.02.2016, 18:48:13
udało się to ogarnąć dzięki pomocy z stackoverflow
Kod
RewriteCond %{THE_REQUEST} /index\.php\?metoda=(?:[^&\s]+)&nazwa=([^\s&]+) [NC]
RewriteRule ^(.+)$ /szukaj/%1? [R,L]
RewriteRule ^szukaj/([^/\.]+)$ index.php?metoda=szukaj&nazwa=$1 [L]
trueblue
13.02.2016, 19:02:11
Tak, i tu jest właśnie podwójne przekierowanie (przeładowanie strony+przekierowanie), to samo co w metodzie php.
Avatarus
13.02.2016, 19:08:29
ta tylko htaccess wykonuje się chyba przed ładowaniem php, wiec przeładowuje de fakco pustą stronę a potem przetwarza php
w wariancie php robi podwójne przeładowanie z pełnym ładowaniem php w obu przeładowaniach
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.