对于SEO目的,我必须将所有表单数据放入URL。这是路由:
Router::connect('/liste-voitures/:marque/:modele/:categorie/:energie',
array(
'controller' => 'vehicules',
'action' => 'index',
),
array(
'pass' => array(
'marque',
'modele',
'categorie',
'energie'
)
)
);
因此,在我的索引操作中,我已经使用值构建了一个数组,并将其传递给重定向函数以与路径匹配:
$urlbuilding = array(
'action' => 'index',
'marque' => 'volvo-3',
'modele' => 'C30-2',
'categorie' => 'citadine',
'energie' => 'diesel'
);
$this->redirect($urlbuilding);
当我到达URL时,这工作正常:
/liste-voitures/volvo-3/C30-2/citadine/diesel/
除了分页。页码指向URL:
/vehicules/index/volvo-3/C30-2/citadine/diesel/page:2/sort:Vehicule.recommande/direction:desc
它应该是
/liste-voitures/volvo-3/C30-2/citadine/diesel/page:2/sort:Vehicule.recommande/direction:desc
我尝试通过设置分页选项来更改网址:
$this->Paginator->options = array(
'url' => array(
'action' => 'index',
'marque' => $this->request->params['marque'],
'modele' => $this->request->params['modele'],
'categorie' => $this->request->params['categorie'],
'energie' => $this->request->params['energie']
)
);
但它没有更好的效果。
然后我尝试添加带通配符的路由:
Router::connect('/liste-voitures/:marque/:modele/:categorie/:energie/*',
array(
'controller' => 'vehicules',
'action' => 'index',
),
array(
'pass' => array(
'marque',
'modele',
'categorie',
'energie',
'page',
'sort',
'direction'
)
)
);
但它没有用。我还没有尝试让页面,排序和方向值更漂亮,如
/liste-voitures/volvo-3/C30-2/citadine/diesel/2/Vehicule.recommande/desc
......但这将是我的下一步;)
有人会介意我说我做错了什么吗?自从我上次感受到这个项目的进展以来已经好几天了。如果有人能以正确的方式驾驶我,我将非常感激! :)
答案 0 :(得分:0)
SEO网址和Cakephp分页网址是硬币的两个不同方面!
对于网址使用您自己的逻辑并将参数传递给分页设置,您可以在视图中创建seo友好网址,并且可以使用cakephp的paginator组件。
Router::connect('/liste-voitures/:marque/:modele/:categorie/:energie/:page/:sort/:direction',
array(
'controller' => 'vehicules',
'action' => 'index',
),
array(
'pass' => array(
'marque',
'modele',
'categorie',
'energie',
'page',
'sort',
'direction'
)
)
);
这应该是你的路由并使用你自己的逻辑创建分页URL,不要使用paginate helper。