Как моя форма поиска может быть отправлена ​​на URL без?в середине? - PullRequest
2 голосов
/ 25 октября 2011

Я хочу создать форму поиска.

Когда я ввожу свой запрос и нажимаю кнопку отправки, я хочу отправить URL-адрес - domain.com/query/there_is_my_query, но как это сделать?

Если я изменю метод на GET, этот URL будет domain.com/query/?query=there_is_my_query.

Но если я изменю действие на /query/, то в контроллере укажите $_POST['search'], этот URL будет domain.com/query.

Редактировать!

Я подумал и решил оставить следующий URL - domain.com/query/?search=there_is_my_query.

Ответы [ 4 ]

0 голосов
/ 25 октября 2011

Вы можете использовать модуль Apache rewrite для перенаправления запросов в точку (начальной загрузки). Этот загрузчик проанализирует URL-адреса и получит параметры.

0 голосов
/ 25 октября 2011

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

0 голосов
/ 25 октября 2011

Следующее будет работать, однако использование глобальных массивов в Kohana считается плохой практикой:

Route::set('query', function ($uri)
        {
            $query_string = $_SERVER['QUERY_STRING'];
            if (preg_match('/query=(.+)/', $query_string, $matches))
            {
                return array(
                    'controller' => 'index',
                    'action' => 'query',
                    'id' => $matches[1],
                );
            }
        }, '(<action>(/<id>))');

Проблема заключается в том, что система маршрутизации Kohana не предназначена для работы со строкой запроса.Если вам действительно нужно пойти по этому пути, то вам придется переместить логику из Kohana в файл .htaccess, используя mod_rewrite.

0 голосов
/ 25 октября 2011

Вы можете либо изменить index.php, чтобы перенаправить любой запрос, содержащий $_GET['query'], путем перенаправления следующим образом:

header('Location: http://domain.com/query/' . urlencode($_GET['query']));

В противном случае вам нужно использовать JavaScript для создания нового URL, как только пользователь нажмет кнопку отправки. Ни одно решение не кажется слишком разумным, если вы спросите меня.

...