0

我需要在我的蛋糕应用程序中重写 URL,以便在 URL 中只显示 slug(例如标题)。例如,如果我有一个蛋糕 URL,如 www.site.com/users/view/1(控制器/操作/ID),如果用户的昵称是 vikram.sinha(没有 ID,我只需要显示 /vikram.sinha)没有操作,没有控制器或 URL 中的任何其他内容)。

我确保在存储之前标题(slug)是唯一的,我能做的最好的就是以下。

www.site.com/profile/vikram.sinha 通过添加以下路线。

Router::connect('/profile/:slug', array('controller' => 'users', 'action' => 'view'),
        array(
            'pass' => array('slug'),
        ));

我面临的问题是我还需要从 URL 中删除配置文件。无法找到一种方法来重写蛋糕中的 URL,而不在 slug 之前添加一些东西。

或者可能是 URL 可以直接使用 htaccess 重写,但我也不擅长。如果有人建议使用 htaccess,那么请假设需要更改的 URL 是 www.site.com/users/view/vikram.sinha

谢谢!

4

1 回答 1

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/ 之后传递的任何东西都是 unname。IMO 不是最好的主意。

于 2013-04-01T14:06:35.040 回答