我正在构建一个搜索表单,但我不知道是使用经典的 get 查询还是创建一个可以与我的路由器匹配的自定义 url 更好。
得到
- 网址:http ://mysite.com/search/?q=query+param&p=2
- 优点:无需js,分析搜索工具友好
- 缺点:对seo不友好
路线
- 网址: http: //mysite.com/search/query+param/2
- 优点:对seo友好
- 缺点:需要js,需要urlencode,必须实现额外的分析代码
我正在构建一个搜索表单,但我不知道是使用经典的 get 查询还是创建一个可以与我的路由器匹配的自定义 url 更好。
得到
路线
我不知道是否有一个最好的答案,但大多数人在 URL 中使用 /term/definition/term/definition 已经有一段时间了,因为这对于 SEO 来说是最好的。然而,谷歌(和其他人)已经取得了一些进展。看看这个 谷歌网站管理员博客条目——他们在搜索项目时似乎更有智慧。
我的一般规则是我使用获取参数进行实际搜索,使用 URL 进行类别(或浏览)——我相信这是最直观的。而且,就像现在看起来一样……无论如何,搜索引擎都可以更好地索引和搜索 URL 参数。
您可以在模块配置中使用自定义路由定义:
'search' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => 'search[/:query][/:page]'
params()
然后,您可以使用控制器中的操作助手解析查询参数:
$query = $this->params()->fromRoute('query');
$page = $this->params()->fromRoute('page');
在您的视图中,您可以使用url()
视图助手来构建具有相同路由定义的 url:
$this->url('search', array('query' => 'test', 'page' => '1'));
只需使用 GET 请求。这里不需要 POST 请求。
希望有帮助!
最好的问候,尤尔根