友好的 URL 并允许用户控制它们

Posted

技术标签:

【中文标题】友好的 URL 并允许用户控制它们【英文标题】:Friendly URLs and allowing users to have control over them 【发布时间】:2012-06-23 21:37:40 【问题描述】:

我有一个带有 CMS 的 CI 应用程序,我一直想知道如何让用户控制他们将发布的博客文章的 URL。我了解 routes.php 文件,但我只是想知道如何允许用户将 url 更改为他们想要的东西?我以前没有这样做过,所以我不确定如何在 CI 中做到这一点。

提前致谢

【问题讨论】:

到目前为止你尝试过什么?如果可能,您是否研究过codeigniter?你知道如何制作自己的 MVC 框架吗?您的问题不清楚,我们会解决具体问题并尽量远离关于 SO 的意见。请重新格式化您的问题,您可能会取得更大的成功... 【参考方案1】:

我怀疑你的意思是像 wordpress 中的帖子的标题,所以标题成为 URL 的一部分?

您需要在application/config/routes.php中为控制器设置自定义路由,例如

$route['posts/(:any)'] = "posts/posts_method/$1";

Posts_method 是指使用给定变量搜索帖子的方法。

【讨论】:

【参考方案2】:

我认为最好的方法是使用 URL Slug 来引用文章。 您可以插入文章的标题,然后为其设置 slug,这样当用户单击 slug 时,您应该使用 slug 在数据库中运行查询以搜索文章。

表格示例:

id_article
title
body
slug

示例表格:

Title: <input type="text" name="title">
Body: <textarea name="body"></textarea>
Slug: <input type="text" name="slug">

我们不假设这个条目是帖子:

Title: Hi, this is my first post!
Body: Wow i'm so happy
slug: my-awsome-post

当您创建指向帖子的链接时,您应该使用 slug 作为 id,例如:

<a href="http://www.example.com/blog/show/my-awsome-post">Read more</a>

当您在模型中运行查询时,您可以使用 where clausole the slug:

$this->db->get_where('table', array('slug'=>$slug));

【讨论】:

以上是关于友好的 URL 并允许用户控制它们的主要内容,如果未能解决你的问题,请参考以下文章

基于url拦截实现权限控制

FullCalendar,我如何允许用户编辑/删除事件并将它们从数据库中删除?

Rails - 如何将生成的 URL 修复为友好的 URL

Mysql权限控制 - 允许用户远程连接

控制通知用户工作状态

PHP中的URL友好用户名?