【问题标题】:URL rewriting in CakeCake 中的 URL 重写
【发布时间】:2013-04-01 12:09:00
【问题描述】:

我需要在我的蛋糕应用程序中重写 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 之前添加一些东西。

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

谢谢!

【问题讨论】:

  • 你试过在没有 /profile 的情况下这样做吗?只是在做 /:slug

标签: cakephp mod-rewrite url-rewriting


【解决方案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 不是最好的主意。

【讨论】:

  • 是的!我会选择第二个选项。当然不是最好的,但我正在与一个不接受“不”作为答案的客户打交道,所以我别无选择。谢谢。
猜你喜欢
  • 2012-04-27
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 2015-01-19
  • 2012-12-28
相关资源
最近更新 更多