2

我想创建一个搜索表单。

当我输入查询并按下提交按钮时,我想提交到一个 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

编辑!

我想了想,决定留下以下网址 - domain.com/query/?search=there_is_my_query

4

4 回答 4

0

您可以修改您的重定向任何包含通过重定向index.php的请求,如下所示:$_GET['query']

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

否则,一旦用户单击提交按钮,您就需要使用 JavaScript 创建新 URL。如果你问我,这两种解决方案似乎都不太合理。

于 2011-10-25T07:42:32.833 回答
0

以下将起作用,但是在 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 的路由系统不是为使用查询字符串而设计的。如果您真的需要这样做,那么您必须使用 mod_rewrite 将 Kohana 中的逻辑移到 .htaccess 文件中。

于 2011-10-25T08:06:56.697 回答
0

让您知道,搜索引擎不使用搜索表单。
因此,使它们对搜索引擎友好是没有意义的。

于 2011-10-25T07:43:40.657 回答
-2

您可以使用 Apacherewrite模块将请求重定向到一个点(引导程序)。此引导程序将解析 URL 并获取参数。

于 2011-10-25T08:08:34.523 回答