Cake中的URL重写

时间:2013-04-01 12:09:00

标签: cakephp mod-rewrite url-rewriting

我需要在我的蛋糕应用程序中重写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

谢谢!

1 个答案:

答案 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。

相关问题