Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML]formularz szukaj z htacccess
Forum PHP.pl > Forum > Przedszkole
Avatarus
Witam
Mam taki formularz wyszukiwania

  1. <form action="/index.php" method=get id="wyszukaj">
  2. <input type="hidden" name=metoda value=szukaj>
  3. <input type=text id="project" name=nazwa size=10 placeholder="Wpisz nazwę szukanej rośliny" />
  4. <input type="hidden" id="project-id" />
  5.  
  6. <a id="loop-icon" onclick="wyszukaj_submit();"></a>
  7. </form>


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

Avatarus
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
Czytałeś cały artykuł? Jest tam kod php odpowiedzialny za to.
Avatarus
tak ale tu jest przekierowanie header, a wolałbym uniknąć podwójnego ładowania strony, nie da się tego zrobić z poziomu htacccess?
trueblue
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
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
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
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
Tak, i tu jest właśnie podwójne przekierowanie (przeładowanie strony+przekierowanie), to samo co w metodzie php.
Avatarus
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.