如何在cakephp中设置控制器动作的URL?

时间:2011-10-28 06:49:04

标签: url cakephp routing seo

我正在创建一个社交网站,因为每个个人资料页面都需要使用友好的URL进行展示。

现在它像www.siteprof.com/profile/23
我需要在此网址的末尾添加aditioanl字符串'jake-web-developer'。结果将类似于 www.siteprof.com/profile/23/jake-web-developer 。我知道在创建个人资料链接时可以这样做。但如果有人使用www.siteprof.com/profile/23此链接访问此配置文件,我可以将之前的文本添加到网址吗?

还有什么方法可以从控制器操作中将这些特定字符串添加到url中吗?

2 个答案:

答案 0 :(得分:0)

看起来不正确,通过CakePHP约定,它应该看起来像:

**www.siteprof.com/profiles/view/23**

之后,您将profiles_controller设置为具有操作view($id=0,$name="") 我不知道为什么这很重要,但你可以使用name参数生成链接,它仍然可以工作:

www.siteprof.com/profiles/view/23/jake-web-developer

如果添加最后一个字符串很重要,那么您应该在视图控制器中进行重定向。检查是否指定了$ name,如果不是,则重定向到带有名称的URL,尽管我建议不要使用它,因为它会影响性能。

答案 1 :(得分:0)

我的解决方案是在页面中放置自定义重定向标头,如果网址不包含重定向到完整网址的SEO友好标题

一种方法是:

public function view($id = null, $slug = null) {

  $data = $this->Profile->findById($id);

  if ($slug == null) {

    $this->redirect(array('action'=>$view, $id, $data['Profile']['slug']));

  }

  // .. rest of view logic

}

希望这会有所帮助: - )