如何组织PHP博客

时间:2009-12-18 00:52:53

标签: php database-design blogs

所以,目前我正在根据文件名组织我的博客:要创建帖子,我输入文件名。与将帖子存储在数据库中相反,我将它们存储在PHP文件中。因此,每次创建帖子时,都会使用文件名和唯一ID创建表中的新行。要引用帖子(例如注释),我会获取当前文件的名称,然后在条目表中搜索匹配的文件名。评论的帖子ID与该帖子的ID相匹配。

显然这不是组织博客的标准方式,但我这样做是出于以下几个原因:

  • 清理网址(甚至比mod_rewrite更干净,可以提供我所读过的内容)
  • 我的机器上的帖子总是有硬拷贝
  • 更容易记住特定帖子的网址(干净网址的一部分)

现在我知道标准方法是将每个帖子存储在数据库中。我知道如何做到这一点,但干净的URL是主要问题。现在问我的问题:

  • 我现在的做法是否有任何错误,或者将来可能出现任何问题?
  • 使用mod_rewrite可以实现我现在可以获得的相同级别的干净URL吗?如果是,请欣赏链接
  • 我将在网络主机上托管这个。是否只有某些Web主机可以访问mod_rewrite所需的文件,或者它通常是所有Web主机上的标准文件?

非常感谢你们!

P.S。要明确的是,我不会计划使用博客引擎。

2 个答案:

答案 0 :(得分:2)

正如克莱图斯所说,这与Movable Type相似。将数据存储在文件中没有任何内在错误。

我想到的一件事是:你在文件中存储了多少?只是发布内容,或者每个PHP文件是否包含整个页面设计的副本而不是使用基本模板?以后改变设计有多难?这可能是也可能不是问题。

您在干净的网址方面究竟在寻找什么?重写规则非常强大和灵活。通过将mod_rewrite与回复所有请求的主PHP文件结合使用,您几乎可以拥有所需的任何URL格式,包括用户友好的URL,而不会显示不明确的ID号甚至文件扩展名。

编辑:

以下是如何使用mod_rewrite和处理请求的主要PHP文件:

  1. Web服务器将所有请求(例如/ my-post-title)传递给index.php
  2. index.php解析请求路径(“my-post-title”)
  3. 在数据库的“slug”或“友好名称”(无论你想称之为什么)列中查找“my-post-title”列并找到相应的行
  4. 从数据库中检索帖子
  5. 将模板应用于发布数据
  6. 将完成的页面返回给客户
  7. 这实质上就是像Drupal和WordPress这样的系统。

    另外,关于Movable Type的工作方式,我已经使用了一段时间,所以我可能错了,但我相信它会存储数据库中的所有帖子。当您点击发布按钮时,它会通过从数据库中提取后期数据并将其插入模板来生成纯HTML文件。当您的网站负载很重时,这是非常有效的 - 当访问者打开您的网站时没有脚本运行,并且当服务器只需要提供静态文件时,它可以跟上繁重的访问。

    显然,在确定解决方案应如何运作时,您有很多选择。你提出的那个听起来不错,但你可能想仔细考虑如何在单个文件中维护大量的帖子,特别是如果你想稍后改变整个网站的设计。您可能想要考虑像Smarty这样的模板引擎,并且只是在您的单个文件中存储帖子数据(没有布局标签)。或者只是在帖子文件中使用一些基本的include()语句来吸取页眉,页脚,导航菜单等。

答案 1 :(得分:1)

你所描述的有点像Movable Type的工作方式。您需要涵盖的问题包括:

  • 联合:RSS / Atom;
  • 网站地图:适用于Google;
  • 注释;和
  • 标记和过滤内容。

不使用数据库并非没有道理。如果我这样做,我将使用像Smarty这样的模板引擎,它可以更好地缓存结果,而不是PHP开箱即用。