我需要保持搜索引擎优化链接活跃,所以我试图301重定向谷歌交通到新的CakePHP路线。
我去:
http://localhost/jakne/someCategory/item-slug
我想让它301重定向到:
http://localhost/product/item-slug
所以我试着用route::redirect
,但是我不能让它工作。
$routes->redirect(
'/jakne/:subcategory/:item',
['controller' => 'Catalog', 'action' => 'product'],
['status' => 301, 'pass' => ['item']]
);
我的Catalog::product
看起来像:
public function product($productId) {
}
我总是得到没有参数传递给操作的错误。我错过了什么?:(
3条答案
按热度按时间pkln4tw61#
在重定向路由中保留参数的选项不是
pass
(这是用于常规路由,并定义哪些参数作为函数参数传递),而是persist
,即您的路由需要类似于:假设您连接了一个正确的目标路由,该路由具有一个名为
item
的参数,类似于。一般来说,你可能会考虑在服务器级别上进行这样的重定向(例如,通过Apache上的
mod_rewrite
),这样性能会更好。ps.浏览器确实缓存了
301
重定向,所以当对这样的重定向进行修改时,确保在修改后清空该高速缓存。另请参阅
*操作手册〉路由〉重定向路由
bksxznpy2#
这其实很简单,我用它根据管理员在控制面板中输入的内容动态生成一个重定向列表,我们用它来保持谷歌的流量,当URL发生变化,而谷歌机器人还没有重新扫描时。
yzckvree3#
尝试以下方法,它对我有效:请求示例如下:本地主机:08080/获取用户名?ID=%3Cid%3E
路线:
控制器: