1

我正在考虑构建一个 CMS,我想为我的帖子实现类似 wordpress 的永久链接。我怎么做?
我的意思是,如何为我的页面定义自定义 url 结构?

4

3 回答 3

1

我建议创建传递 URL 参数的链接,例如 ..."http://...PostID?123&CatID=232&..." 以便当用户单击该特定链接时,您可以解析参数在 URL 中,并根据 id 获取确切的帖子,甚至根据需要通过传入其他字段进行进一步过滤。

于 2010-11-10T17:58:24.533 回答
1

您使用什么语言?我假设您正在考虑 PHP(鉴于您对 word press 的引用)。你有几个选择:

  1. 模组改写
  2. 路由器

在我看来,最好的选择是找到一个提供良好路由功能的现代 Web 框架。此外,看看修改现有的 CMS(很多存在;您似乎听说过 word press)。

于 2010-11-10T17:59:04.293 回答
1

如果你想自己构建整个东西,首先要了解前端控制器是什么,因为它真正解决了如何为不同的 URL 执行相同的代码的根本问题。有了这种理解,有两种方法可以解决这种设计模式的问题:URL 重写或物理文件生成。

网址重写

通过 URL 重写,您需要拦截请求的 URL 并将其发送到您的前端控制器。通常这是在 Web 服务器级别完成的,尽管一些应用程序服务器也充当 Web 服务器。正如其他人发布的那样,使用 Apache,您可以使用带有如下规则的 mod_rewrite:

RewriteRule ^/(.*) /path/to/front/controller.ext [E=REQUEST_URI:%{REQUEST_URI},QSA,PT,NS]

使用此规则,最初请求的路径将作为名为“REQUEST_URI”的变量发送到前端控制器。请注意,我不确定 PHP 中访问它的正确语法。在前端控制器散列(例如 MD5)中,该值并使用它从数据库中查找记录 - 考虑到您使用的任何散列算法都会产生重复。如果您允许 URL 超过数据库中 varchar 数据的最大列大小,则哈希是必需的,假设您无法搜索 CLOB。

物理文件生成

物理文件生成将创建一个映射到您想象的永久 URL 的文件。因此,您将编写一些在发布文件时创建/重命名文件的内容。这消除了存储散列的需要,而是您将有关要在该文件中提供的帖子的信息(即帖子的 ID)放入并将其传递给前端控制器。

推荐

我的偏好是 URL 重写方法,因此您不必担心在运行时编写动态代码文件。也就是说,如果你想要一些不那么神奇的东西,或者你期望有很多请求,那么物理文件生成是可行的方法,因为它更明显并且需要服务器做更少的工作。

于 2010-11-10T18:46:48.330 回答