我需要在我的蛋糕应用程序中重写URL,使得只有slug(例如title)显示在URL中。例如,如果我有像www.site.com/users/view/1(控制器/操作/ ID)这样的蛋糕网址,如果用户的昵称是vikram.sinha,我只需要显示/vikram.sinha(无ID,没有操作,没有控制器或URL中的任何其他内容。)
我确保标题(slug)在存储之前是唯一的,我能做的最好的是以下内容。
www.site.com/profile/vikram.sinha添加以下路线。
Router::connect('/profile/:slug', array('controller' => 'users', 'action' => 'view'),
array(
'pass' => array('slug'),
));
我面临的问题是我还需要从网址中删除个人资料。找不到一种方法来重写蛋糕中的URL而不在slug之前添加一些东西。
或者可以直接使用htaccess重写URL,但我也不好。如果有人建议使用htaccess,请假设需要更改的网址是www.site.com/users/view/vikram.sinha
谢谢!
答案 0 :(得分:1)
你最好的选择IMO会做一些类似reddit的事情,其中每个slug都以/ r /为前缀。
示例:
mysite.com/u/johnsmith
然后,在您的路线中,您可以执行以下操作:
Router::connect('/u/:slug/*', array('controller'=>'users', 'action'=>'view'),
array('pass'=>array('slug')));
如果你真的不想这样做,你可以使用类似的东西:
Router::connect('/:slug/*', array('controller'=>'users', 'action'=>'view'),
array('pass'=>array('slug')));
但请记住,任何其他控制器,插件等等都需要自己的路由,因为它会认为在mysite.com/是uname之后ANYTHING已经过去了。不是最好的想法IMO。