使用CakePHP,我想从这个URL重定向:
http://www.example.com/songs/12345/Michael-Jackson-Billie-Jean
到此网址:
http://www.example.com/songs/12345
在新网址中,控制器为songs
,ID为12345
,隐含操作为view
,并且已删除子弹(Michael-Jackson-Billie-Jean
)。< / p>
是否可以使用routes配置文件对此重定向进行编程,还是需要在控制器或路由类中编写稍高级的重定向?
我尝试了以下两种可能性无济于事。在第一次尝试中,我最终在网址中获得了一个带有view
的网址,并在网址末尾添加了参数:
Router::redirect(
'/songs/:id/**',
array('controller' => 'songs', 'action' => 'view'),
array('persist' => array('id'))
);
// Redirects to http://www.example.com/songs/view/Michael-Jackson-Billie-Jean%2Fid%3A1286072880/id:view
在我的第二次尝试中,重定向几乎可以正常工作,但字符串:id
实际上在URL中回显:
Router::redirect(
'/songs/:id/**',
'/songs/:id'
);
// Redirects to http://www.example.com/songs/:id
我想我可以在root .htaccess文件中写这个重定向,但我更愿意将所有路由保存在一个地方;即CakePHP路由文件。
有谁知道如何重定向到http://www.example.com/songs/:id
:id
是歌曲ID而不是字符串:id
?非常感谢你。
答案 0 :(得分:1)
使用以下路线获取简单解决方案:
Router::connect('/songs/*', array('controller' => 'songs', 'action' => 'view'),array('pass' => array('id')));
function view($id=null){
// $id will be song id
// For example, http://www.example.com/songs/12345 here $id is 12345
}
不要使用.htaccess,它可以通过routes.php轻松处理。
干杯