如果匹配url模式,应该如何编写一个钩子以附加一个段?
例如:
/site/product/id
路线:
/site/product/id/title-from-query
答案 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));