【问题标题】:How does a blog engine create blog posts?博客引擎如何创建博客文章?
【发布时间】:2009-06-20 00:27:29
【问题描述】:

我正在创建一个博客引擎作为一项学习练习,但一个特定的问题让我很困惑。我想知道如何在 Wordpress 等博客引擎中创建博客文章?我认为有两种方法可以做到这一点:

1) 创建一个名为“testPost”的新博客文章会创建一个名为 www.myblog.com/testPost.html 的新 HTML 页面。因此,对于每篇新博客文章,您都将一个新的 HTML 页面保存到服务器。这种方法似乎效率低下。一个博客可以有数百篇博客文章,这意味着您必须创建数百个 HTML 页面。我想我不想使用这种方法。

2) 您有一个通用博客文章页面,其数据根据您尝试访问的文章呈现。例如,如果我创建了“testPostOne”,则通用博客文章页面将填充 testPostOne 的数据和 URL,如果我创建“testPostTwo”,则通用页面将呈现 testPostTwo 各自的内容等等。

但是使用这种方法会带来自己的问题。例如,您将如何链接到实际不存在的页面?无法链接到 http://www.myblog.com/testPostOne.html

这是我可以想出的两种方法来解决这个问题。我不确定是否还有其他选择。如果您知道,请随时推荐解决此问题的更好方法。

基本上,我希望能够为每篇博文创建一个格式良好的 URL,而不必在服务器上为每篇博文创建一个新的 HTML 页面。

编辑:我可能会补充说我正在使用 ASP.NET 来执行此操作,因此通过此框架可用的任何方法都会有所帮助

【问题讨论】:

    标签: asp.net wordpress blogs


    【解决方案1】:

    基本思想是使用数据库。每个帖子都是数据库中的一个条目,您只需根据 URL 检索数据。例如,

    www.myblog.com/posts.php?postid=1 或者 www.myblog.com/posts.aspx?postid=1

    然后,您可以使用 URL 重写方法以更清晰的 URL 检索相同的帖子,或者使用更好的 RESTful 方法来执行相同的任务。

    【讨论】:

    • 如果您喜欢标题,您可以随时使用 Stack Overflow 方法并将标题设置为 URL。
    【解决方案2】:

    这是用 ASP.NET 2.0 编写的 an open source blog engine 和一个 written in PHP(还有很多其他的)。最好的办法是检查设计和架构,并剖析它(或类似的东西)是如何工作的。

    【讨论】:

      【解决方案3】:

      您需要在 PHP 中创建一个动态页面,该页面从数据库中读取帖子内容的数据。如果您希望页面中包含漂亮的 URL,那么您需要查看 mod_rewrite 之类的东西来重写 URL。

      【讨论】:

        【解决方案4】:

        如果您动态创建页面(如建议 2 中所示),当您尝试访问它时,http://www.myblog.com/testPostOne.html 将存在,即使它不是磁盘上的实际文件...

        所以建议 2 可能是最好的方法。

        【讨论】:

        • 它真的存在吗?我原以为“testPostOne.html”必须是特定帖子的数据库中标识符的名称。但它很可能是您使用的 ID,因此 URL 将是“myblog.com?post_id=1”,除非您开始使用 mod_rewite,这是一个全新的球类游戏。
        • @gargantaun: myblog.com?post_id=1 存在吗? index.html 是否存在?什么定义了网络服务器上资源的存在性?
        【解决方案5】:

        就个人而言,我使用 Apache mod_rewrite。所以当你有一个像这样的 URL 时:

        http://myblog.com/archives/my_very_first_post,

        你可以像这样制定一个重写规则:

        RewriteEngine on
        RewriteRule ^archives/(.*)$ myblog.php?post=$1
        

        Apache 将“my_very_first_post”解释为帖子 ID,并将其提供给处理该 ID 的 PHP 脚本。然后脚本从数据库中获取帖子并显示它。

        我相信这是最常见的方法。

        【讨论】: