如何实现类似Wordpress的永久链接

时间:2010-11-10 17:48:54

标签: content-management-system permalinks

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您使用的是哪种语言?我假设您正在考虑PHP(考虑到您对word press的引用)。您有几个选择:

  1. Mod-Rewrite
  2. Router
  3. 在我看来,最好的选择是找到一个提供良好路由功能的现代Web框架。此外,看看修改现有的CMS(很多都存在;你似乎听说过单词按压)。

答案 2 :(得分:1)

如果你想自己构建整个事物,首先要了解front controller是什么,因为它真正解决了如何为不同的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)中使用此值并使用它从数据库中查找记录 - 考虑您使用的任何哈希算法将产生重复项。假设您无法在CLOB上搜索,那么如果您允许URL覆盖varchar数据的数据库中的最大列大小,则必须使用哈希。

物理文件生成

生成物理文件会创建一个映射到您想象的永久URL的文件。所以你要写一些在发布时创建/重命名文件的东西。这消除了存储哈希的需要,而是将关于要在该文件中提供的帖子的信息(即帖子的ID)放置,并将其传递给前端控制器。

<强>建议

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