动态url alias功能
这里请教一下大家,关于CI,如何完成查询资料库后的url alias~普通的几个url alias,可以通过config/route.php,这个手册上有,可是这里由于别名需要使用者自己设置,而且数目较多,所以需要通过查询数据库来完成。
能不能通过hooks较好的和系统融合完成?不影响以后的ci升级?
看看大家有没有什么好的方法? 我也一直在寻找和研究此问题的好的解决方案。
目前我所能想到的,并且不触动CI核心库的方案是:
在你需要实现动态路由的控制器里面,写一个路由分发函数。举个例子,比如用户在后台的选项中定义了一个这样的URL规则(也就是定义若干wildcard):
archive/{year}-{month}-{day}/{post_slug}
那么,我们可以将其首先保存到数据库中,然后在显示和读取URL相关内容时,根据这个路由规则显示需要的内容。
function _dispatcher()
{
$url_pattern = $this->uri->uri_string();
//下面要做的就是分析找个uri
//对于不同类型的uri就redirect到不同的函数中
} 关注!
表示关注——万恶的10字符限制~~~ 很感谢,saturn
你是将所有路径都指向一个地址然后通过这地址进行转址,的确是个巧妙的方式~ 本帖最后由 scckfzx 于 2010-5-3 23:28 编辑
我也一直在寻找和研究此问题的好的解决方案。
目前我所能想到的,并且不触动CI核心库的方案是:
在你需要 ...
saturn 发表于 2010-3-24 13:58 http://www.codeigniter.org.cn/forums/images/common/back.gif
这样岂不是产生无数的302重定向?这样对SEO非常非常的不利吧。我觉得还是在每个控制器增加_remap方法对URL参数进行判断,然后调用相应的方法,这样唯一的要求就是URL段中必须保留控制器的名称,只能对URL片段中方法部分进行自定义 回复 5# scckfzx
看来你没有完全明白我的意思,这里只是函数的分发,并没有产生真正的http转向。其实和你写的是一个道理。 这个东西,我直接用路由的正则功能。
$route['(*)'] = "index/index/$1";
修改这个正则,会把所有的数据传到index控制器中的indexindex里做查询就好了。
页:
[1]