Całość ma składać się z pliku .htaccess i okienka wpisywania tekstu na stronie. Htaccess zawiera na razie same Redirect.
Użytkownik strony będzie wpisywał czego szuka, a redirect zrobi resztę.
Teraz pytania
Fraza wpisana w okienku wyszukiwania ma być dodana do stałego adresu, czyli
Ktoś wpisuje np. info, skrypt łączy to w http://example.pl/info i wywołuje adres
Okienko to będzie prawdopodobnie html form
Resztę załatwia htaccess.
Gdzie znajdę skrypt który połączy adres i wpisany tekst?
Pisownia. W pliku htaccess mogą znaleźć się instrukcje, które pozwolą zmniejszyć ilość przekierowań. Na początek potrzebne będą
konwersja dużych liter na małe
znaków akcentowanych, ogonkowanych itd do podstawowych ascii.
eliminacja wpisanych spacji, podkreśleń, ogólnie wszystkich poza małymi literami i cyframi
Reguły mają być zastosowane w podanej kolejności.
Może ktoś podać gotowy przykład?
Po kolei jeszcze raz
Ktoś wpisuje w formularzu Żółte DZióbki!?
Skrypt konwertuje tekst po kolei na
Zolte DZiobki!? (do podstawowych liter)
zolte dziobki!? (A-Z do a-z)
zoltedziobki (usuwa znaki spoza 0-9, a-z)
Teraz tekst jest doklejany do adresu domeny http://example.pl/zoltedziobki
i otwierany (to może być najtrudniejsze) i dlatego tu pytam.
Dla pewności robię jeszcze jeden redirect pod ten sam adres dla zoltedziubki, czy nawet dla zultedziupki, ale nie robię kilkudziesięciu przekierowań dla tekstu wpisanego z diakrytykami i bez, dla pisanego od dużych liter, czy całego dużymi literami.
Dla tekstu wpisanego z poważniejszym błędem, np. Zielone Dziubki, ostatni redirect przekieruje na stronę “nic nie znaleziono" lub po prostu na główną.
teraz mówisz o skrypcie - i to jest dobre rozwiązanie czyli:
tworzymy index.html ze skryptem nawet w JavaScript
na tej stronie znajduje się formularz do wpisania szukanej frazy
skrypt po wpisaniu i kliknięciu w przycisk konwertuje według podanych przez Ciebie reguł wprowadzoną frazę
skrypt przekierowuje użytkownika na adres składający się z uzyskanej przekonwertowanej frazy
za resztę odpowiada już htaccess i redirecty które masz już utworzone.
Mała uwaga: takie rozwiązanie nie jest najlepszym - najwygodniejszym. Przy dużej liczbie fraz które chcesz obsługiwać będziesz miał bardzo długą listę redirectów, a to może wpłynąć negatywnie na działanie serwera WWW i szybkość ładowania stron.
Teraz nasuwa się pytanie, w czym oczekujesz pomocy? Bo początkowo wyglądało że pytasz jak zrobić coś ala wyszukiwarkę w httaccess, a teraz to już sam nie wiem. Swoją drogą to nie będzie wyszukiwarka, a bardziej przekierowywanie użytkownika do pliku przy pomocy jakiegoś hasła/słowa klucza. Z wyszukiwaniem to nie ma nic wspólnego.
i nie ma w nim miejsca na HTML’owe meta typu keywords czy description
Wcześniej robiłem przekierowania w pełnoekranowej ramce, gdy stron było kilkadziesiąt. Teraz jest ich za dużo, żeby dla każdej robić folder (jako nazwa przekierowania) i plik index.html z tagami i pełnoekranowym IFRAME. Poza tym, adres nie zmieniał się przy przechodzeniu do innej strony, więc odrzuciłem tą metodę.
Nie liczyłbym na gotowe rozwiązanie bo to o czym do tej pory pisałeś jest trochę dziwne i ciężko będzie znaleźć gotowca, ale zawsze możesz szukać. Jeśli już będziesz miał jakieś przykłady to i tak będziesz musiał wiedzieć jak ich użyć, więc jeśli zupełnie nie znasz js to też nic z tego raczej nie będzie.
To o czym do tej pory pisałeś w żaden sposób nie zredukuje reguł redirect w htaccess.
W takim razie lepiej zająć się zmianami w skrypcie tak by były linki przyjazne użytkownikom.
Dlaczego chciałbyś takie rzeczy umieszcza w ogóle w linku?
Ja już naprawdę pogubiłem się w tym wszystkim. Co Ty chcesz zrobić i po co, a w czym i jak to już w ogóle nie mam pojęcia.
Składnię podkradnę z innych plików, przykładów jest wiele, choćby taki var str = "Hello World!";
var res = str.toLowerCase();
W tym przykładzie zmienna str jest zdefiniowana, tutaj musi być pobrana z okna input
Ten fragment ma pobierać tekst z okna
html: <input name="searchTxt" type="text" maxlength="128" id="searchTxt" class="searchField"/>
js: document.getElementById("searchTxt").value;
Zanim zastosuję reguły, muszę mieć pewność, że string z okna został zdefiniowany jako zmienna tekstowa.
Czy automatycznie zostanie utworzona zmienna searchTxt, czy konieczne jest zdefiniowanie
var nazwa = ? (i tu stoję)
Czyli cały czas operuję na jednej zmiennej, zamiast tworzyć tymczasowe str1, str2 po zastosowaniu kolejnych modyfikacji.
str = "http://example.pl/" + str;
Jeśli to jest dobrze, to finalnie trzeba będzie wywołać ten adres.
Domyślam się, że skrypt ma zostać wywołany pomiędzy kliknięciem na przycisk w formularzu (lub Enter), a przejściem przeglądarki pod adres.
Skrypt js zmodyfikuje zmienną, ale nie adres. Czyli musi być on przekazany do pliku html?
obsługę zdarzenia zatwierdzenia formularza które nazywa się onSubmit
wykonuje konwersję wprowadzonej frazy w inputa z ID key-word w ramach obsługi wydarzenia
przekierowuje użytkownika na zbudowany adres i blokuje wysłanie formularza
Wiesz już mniej więcej jak zrobić konwersję według własnych zasad, musisz teraz znaleźć jak obsłużyć zdarzenie zatwierdzania formularza oraz jak przekierować użytkownika na inny adres za pomocą JS. Wydaje mi się że nie będziesz musiał blokować wysyłania formularza, ale w razie problemów, że zamiast przejścia na inną stronę przeładowuje Ci się formularz wprowadzania tekstu to będzie to właśnie problemem i będziesz musiał dodać.
Dzięki. Zanim podejmę się tak skomplikowanej operacji, przydałoby się sprawdzić działanie, aby skrypt wyświetlił wynik jako tekst na ekranie. Jest jakaś prosta instrukcja?
Mniej więcej działa, teraz tylko dopracuję detale, bo jednak nie wszystko chodzi jak powinno.
<input id="key-word" type="text" name="key-word" value=""/>
<input id="sookbtn" type="button" value="click" Onclick="sook()" Onsubmit="sook()"/>
<script language="javascript" type="text/javascript">
function sook()
{var str1
str1 = document.getElementById('key-word').value;
str1 = str1.toLowerCase(); //zamienia na małe litery
str1 = str1.replace(/\s/g, ''); //usuwa spacje
str.normalize(); //ma konwertować UTF-8 do podstawowych, ale coś mu nie idzie
window.open("http://adres.pl/" + str1, "_top",);
}
i do tego, żeby Enter uruchamiał skrypt
document.getElementById("key-word").addEventListener("keyup", function (event) {
if (event.keyCode==13) {
document.getElementById("sookbtn").click();
}
});