Codeigniter重写URL

时间:2012-08-22 09:25:05

标签: codeigniter url-rewriting

如果匹配url模式,应该如何编写一个钩子以附加一个段?

例如:

/site/product/id

路线:

/site/product/id/title-from-query

1 个答案:

答案 0 :(得分:1)

正如您在评论中所建议的那样,Codeigniter的路线非常适合这一点。它们允许您精确控制用户/浏览器在URL中可以看到的内容,同时将其推送到对框架有意义的内容。

在routes.php中,您需要以下内容:

$route['site/product/(:num)/(:any)'] = 'controller/method/$1';
$route['site/product/(:num)] = 'controller/method/$1';

在第一行中,第二个参数(:any)就是允许路由接受title-from-query,第二行是可选的,并且可以处理没有{{1}的情况}已被指定。 title-from-query应替换为控制器名称和使用的方法。

<强>更新

要创建这些URL(如果数据库中还没有slug),可以使用url_title()方法:

'controller/method'

以上将在末尾创建一个与'slug'的链接。要强制重定向,您需要检查控制器中是否设置了正确的段,然后重定向(如果没有)。 StackOverflow的实现最有可能用于SEO目的,如果你移除了slug,你会被带到slug的地址,它必须使用ID来弄清楚它是什么。如果没有提供slug,你需要相同的逻辑来重定向:

echo anchor('site/product/id'.url_title($title));