我想创建一个搜索表单。
当我输入我的查询并按下提交按钮时,我想提交一个网址 - domain.com/query/there_is_my_query
,但该怎么做呢?
如果我将方法更改为GET,则该网址将为domain.com/query/?query=there_is_my_query
。
但如果我将操作更改为/query/
,则在控制器中设置$_POST['search']
,该网址将为domain.com/query
。
修改<!/强>
我想并决定留下以下网址 - domain.com/query/?search=there_is_my_query
。
答案 0 :(得分:0)
您可以修改index.php
以通过重定向重定向包含$_GET['query']
的任何请求,如下所示:
header('Location: http://domain.com/query/' . urlencode($_GET['query']));
或者,一旦用户单击提交按钮,您就需要使用JavaScript来创建新URL。如果你问我,这两种解决方案似乎都不合理。
答案 1 :(得分:0)
为了通知您,搜索引擎不使用搜索表单 所以没有必要让他们对搜索引擎友好。
答案 2 :(得分: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文件中。
答案 3 :(得分:-2)
您可以使用Apache rewrite
模块将请求重定向到某个点(引导程序)。这个引导程序将解析URL,它将获得参数。