Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ЧПУ и Форма поиска (GET)


Автор: arashvg 24.4.2012, 17:18
Собственно, есть форма которая передает поисковый запрос скрипту.
Код

 <form action="search.php" method="get" class="form-wrapper">  
  <input type="search" name="filmsearch" id="search" placeholder="" value="" required>  
  <input type="submit" value="искать" id="submit">  
  </form>


В файле .htaccess прописано 
Код

RewriteEngine On
DirectoryIndex index.php
RewriteBase /

# Редиректы
ErrorDocument 404 /errors/error.php?404

RewriteRule ^search/([^/]*).html$ search.php?filmsearch=$1  [QSA,L]
RewriteRule ^search/$ search.php


В начале скрипта search.php получаю поисковый запрос вот так
Код

$filmsearch = htmlspecialchars($_GET['filmsearch'], ENT_QUOTES);
$filmsearch = urldecode($filmsearch);
$filmsearch= iconv('utf-8','windows-1251', $filmsearch);

Если в адресной строке написать http://сайт.ru/search/поисковый запрос.html Скрипт отрабатывает нормально и выводит все как надо, но если нажать на кнопку искать на форме (на странице http://сайт.ru/search/) то в адресной строке ссылка повляется такого вида

http://сайт.ru/search/?filmsearch=%ED%EE%F1%E0....  и поиск не происходит... 

Собственно как мне при нажатии на кнопку поиска отправить GET запрос скрипту и перенаправить пользователя на ссылку вида  http://сайт.ru/search/поисковый запрос.html

Зарание благодарен!

Автор: WolfAlone 26.4.2012, 22:27
Цитата(arashvg @  24.4.2012,  17:18 Найти цитируемый пост)
перенаправить пользователя на ссылку...


Зачем использовать .htaccess если можно сделать обычное перенаправление на PHP?

Например, так:

Код

//Обработали гет-запрос в скрипте
header("Location: http://example.com/search/search_query.html"); //Перенаправляем пользователя на другую страницу
//P.S. search_query - заменить на необходимое значение


Хотя, сказать по правде, я всё-таки не до конца понимаю логику. Зачем что-то передавать скрипту, если пользователь тут же будет перенаправлен на другую страницу? Для логирования поисковых запросов?

Автор: arashvg 16.5.2012, 09:12
Цитата(WolfAlone @  26.4.2012,  22:27 Найти цитируемый пост)
Хотя, сказать по правде, я всё-таки не до конца понимаю логику. Зачем что-то передавать скрипту, если пользователь тут же будет перенаправлен на другую страницу? Для логирования поисковых запросов?


Не совсем то что нужно, у меня на странице индекс есть форма поиска, мне нужно чтобы например если пользователь вводит в ету форму запрос "трансформеры" и нажымает на кнопку поиск то результат поиска ему открывался на странице с адресом "http://сайт.ru/search/трансформеры.html". 

Тоесть как мне сделать правильно саму форму поиска, чтобы в зависимости от введенного слова, пользователю открывалась нужная страница?

Автор: Aliance 16.5.2012, 09:52
Мне одному кажется, что так делать нелогично?

Автор: arashvg 16.5.2012, 09:57
Цитата(Aliance @  16.5.2012,  09:52 Найти цитируемый пост)
Мне одному кажется, что так делать нелогично? 

почему?

Обясню зачем не это нужно... 
делаю сайт, мини поисковик, на главной только форма поиска, сейчас результаты поиска по нескольким сайтам отображаются на странице с адресом вида
http://сайт.ru/search.php?filmsearch=%CC%F1%F2%E8%F2%E5%EB%E8%20 

хочу сделать ЧПУ, чтобы эти же результаты отображались на странице 
http://сайт.ru/search/трансформеры.html

что тут не логично?
и как будет логичней? с радостью выслушаю предложения!!!

Автор: Fortop 16.5.2012, 10:58
Цитата(arashvg @  16.5.2012,  09:12 Найти цитируемый пост)
Не совсем то что нужно, у меня на странице индекс есть форма поиска, мне нужно чтобы например если пользователь вводит в ету форму запрос "трансформеры" и нажымает на кнопку поиск то результат поиска ему открывался на странице с адресом "http://сайт.ru/search/трансформеры.html". 

Есть два варианта:

1. подменять яваскриптом action у формы на нужный адрес
2. после перехода на скрипт поиска, делать редирект на нужный адрес

Первый вариант будет на 1н редирект меньше, но не будет работать без js
Второй вариант будет работать в любом случае, но нужен дополнительный редирект.

Автор: arashvg 16.5.2012, 11:32
Цитата(Fortop @  16.5.2012,  10:58 Найти цитируемый пост)
Есть два варианта:

1. подменять яваскриптом action у формы на нужный адрес
2. после перехода на скрипт поиска, делать редирект на нужный адрес

Первый вариант будет на 1н редирект меньше, но не будет работать без js
Второй вариант будет работать в любом случае, но нужен дополнительный редирект. 

спасибо!!! с учетом того что у меня с js совсем туго, буду пробовать второй вариант... 

Автор: Aliance 16.5.2012, 14:07
arashvg, потому что ЧПУ предполагает что такая страница реально существует. В вашем же случае предполагается что существует бесконечное множество страниц. Что будет если ввести "dfkusljbhgsfgss"? А если ввести "трансформеры/index"?

Если уж делать как предложил Fortop, то оба варианта сразу нужно делать, нет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)