使用可变段构建Codeigniter URL

时间:2012-06-07 19:42:29

标签: php codeigniter url-routing codeigniter-2 codeigniter-routing

我在CI用户指南和Stackoverflow上搜索了我的问题的解决方案,但是找不到。所以,这是我的问题。

我需要构建SEO友好的URL。我有一个名为“Outlets”的控制器,我需要生成的视图将具有类似http://www.mysite.com/ [city] / [area] / [outlet-name]的URL结构。

段city和area是各自表中的字段,outlet_name是“Outlets”表中的字段。

我可以生成类似http://www.mysite.com/outlets/123的网址,但如何将网址和地区名称添加到网址中。

2 个答案:

答案 0 :(得分:3)

如果您的所有页面都使用相同的控制器,请在config / routes.php中添加此...

$route['(:any)/(:any)/(:any)'] = "outlets/$1/$2/$3";
$route['(:any)/(:any)/(:any)/(:any)'] = "outlets/$1/$2/$3/$4"; // fixed typo

在控制器中,您需要重新映射函数调用,因为Codeigniter将查找具有城市名称的函数,但它们将不存在。

http://codeigniter.com/user_guide/general/controllers.html#remapping

public function _remap($city, $area, $outlet, $options = '')
{
  $this->some_function_below($city, $area, $outlet, $options);
}

答案 1 :(得分:0)

另一种替代解决方案。

您可以使用URI细分。对于http://www.mysite.com/ [city] / [area] / [outlet-name]

这样的网址
<?php

$this->uri->segment(3);  // city
$this->uri->segment(4);  // area
$this->uri->segment(5);  // outlet-name

?>

依此类推......有关详细信息,请参阅http://codeigniter.com/user_guide/libraries/uri.html