我想在搜索时生成这样的SEO友好URL:
http://www.example.com/search(无过滤器)
http://**www.example.com/search/region-filter
http://**www.example.com/search/region-filter/city-filter
并以这种方式对它们进行分页:
http://www.example.com/search/2(无过滤器,第2页)
http://**www.example.com/search/region-filter/2
http:/ /**www.example.com/search/region-filter/city-filter/2
(抱歉,由于声誉我不能发布2个以上的链接)
因此第二段可以是过滤器或多个页面(与第三个段相同).
我的Laravel 5路由文件:
Route::pattern('page', '[0-9]+');
...
Route::get('search/{region}/{city}/{page?}', 'SearchController@index');
Route::get('search/{region}/{page?}', 'SearchController@index');
Route::get('search/{page?}', 'SearchController@index');
Run Code Online (Sandbox Code Playgroud)
由于"页面"模式,路由工作正常,但在控制器内部这个请求http://**www.example.com/search/2映射$ page中的{page}(即使使用最后的路由规则):
public function index($region='', $city='', $page='')
Run Code Online (Sandbox Code Playgroud)
Codeigniter参数按名称映射,但看起来Laravel按位置映射它们,所以我总是得到$ region中的第一个.
是否可以通过名称而不是位置来路由参数,或者使用一些Laravel替代方法将它们放入控制器中?(我可以计算细分,但对我来说这是一个难看的解决方案)