0

因此,这是 CodeIgniter 网站 Forrst 上的一个示例:

http://forrst.com/posts/PHP_Nano_Framework_WIP_Just_throwing_some_ideas_o-mU8

看看那个漂亮的网址。您有根站点,然后posts是 ,然后是帖子标题和简短的摘录。这对于用户体验来说非常酷。

但是,的 CodeIgniter 站点的 URL 简直糟透了。例如

http://mysite.com/code/view/120

所以它访问控制器code,然后是函数view20最后是 Post ID(它基于它进行数据库查询)。

我意识到我可以做一些路由。因此,在我的 routes.php 文件中,我将以下内容放入:

$route['posts/(:num)'] = "code/view/$1";- 所以这将使http://mysite.com/posts/120与http://mysite.com/code/view/120相同。更好一点,我想你会同意的。

我的问题是- 我如何使用与 Forrst 类似的技术,从而将帖子的摘录实际上附加到 URL 中?我真的不明白这怎么可能。PHP 脚本如何确定它应该在数据库中查找什么,尤其是如果有多个具有相同标题的东西?

谢谢!

杰克

4

3 回答 3

2

要获得示例中的 URL,您需要添加路由规则,就像您已经完成的那样$route['posts/(:num)'] = "code/view/$1";。Forrst 的 url 似乎是“映射的”(或类似的东西),我认为 uri 的最后一部分o-mU8是存储在数据库中的标识符(看起来像一个哈希,但我更喜欢一个 int id),所以如果他查询,他用 ndashes (_) 分割 uri,并得到它的最后一部分,就像在你的控制器动作中这样:

$elements = explode('_',$this-uri-segment(2));
$identifier = $elements[count($elements)-1];

$results = $this->myModel->myQuery($identifier);

基本上,控制器 / 和标识符之间的字符串完全没用,但如果您的目标是更好的 SEO,则不是。

我希望这有帮助

于 2010-06-23T14:06:45.947 回答
0

codeigniter 中的 URL 助手有一个函数调用 url_title()。我自己没有使用过它,但我认为这就是您正在寻找的。

于 2010-07-01T21:29:11.637 回答
0

官方讨论。经常与此相关的术语是“蛞蝓”。我自己还没有从 CI 论坛测试过这种方法,但是建议和示例看起来还不错。

于 2010-06-23T11:38:24.440 回答