Content management system 如何实现像Permalink这样的Wordpress

Content management system 如何实现像Permalink这样的Wordpress,content-management-system,permalinks,Content Management System,Permalinks,我正在考虑建立一个CMS,我想为我的帖子实现像permalink一样的wordpress。我该怎么做? 我的意思是,如何为我的页面定义自定义url结构?我建议创建传递url参数的链接,例如…”http://...PostID?123&CatID=232&...“这样,当用户单击特定链接时,您可以解析URL中的参数,并根据id获得确切的帖子,或者根据需要通过传入其他字段进行进一步筛选。您使用的是什么语言?我假设您正在考虑PHP(考虑到您对word press的引用)。您有几个选择: 在我看来,

我正在考虑建立一个CMS,我想为我的帖子实现像permalink一样的wordpress。我该怎么做?

我的意思是,如何为我的页面定义自定义url结构?

我建议创建传递url参数的链接,例如…”http://...PostID?123&CatID=232&...“这样,当用户单击特定链接时,您可以解析URL中的参数,并根据id获得确切的帖子,或者根据需要通过传入其他字段进行进一步筛选。

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


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

    如果您想自己构建整个CMS,首先要了解a是什么,因为它真正解决了如何为不同URL执行相同代码的根本问题。基于这种理解,有两种方法可以解决此设计模式的问题: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重写方法,因此您不必担心在运行时编写动态代码文件。这就是说,如果您想要一些不那么神奇的东西,或者您需要大量的请求,那么物理文件生成是最好的选择,因为它更明显,并且需要服务器做更少的工作

    如果是这样的话,就没有必要问这个问题了。我想定义我的页面的url。。就像你在wordpress中所做的那样。permalinks如..+1,提供“永久链接”不需要其他任何东西@Bibhas:好吧,您所指的permalinks类型实际上是Apache提供的一种功能。见@Kevin的答案。看来你要找的是mod_rewrite。但最后,mod_rewrite模块只是简单地将带有参数的url(正如我向您提到的)转换为一种更为用户友好的形式,我也这么认为不过,我想知道答案。:)我已经考虑过定制其他CMSE的情况。但我想自己建造它。是的,我在PHP上工作,是的,我非常熟悉其他可用的CMSE。。我将查看您提供的链接。谢谢你的回复。:)我的真正意图是学习如何建造这样的东西。因此,定制不是我的选择之一。:)