【问题标题】:Dynamically loading blog posts from database从数据库动态加载博客文章
【发布时间】:2016-09-25 09:34:01
【问题描述】:

我确定我做错了,而且还有更好的方法。

我刚刚完成了一个美食博客网站。帖子被上传到数据库中。 HTML 文件是在需要时使用 SELECT 语句中的信息生成的。

基本上,我认为创建一个新的 HTML 文件并以这种方式存储页面并不明智,而是动态创建它们。

这是我的(糟糕的)方法:

  1. 用户点击链接或输入网址

  2. URL 的结构如下:www.website.com/name-of-post

  3. 没有名为 name-of-post.php 的 HTML 文件,因此它重定向时出现 404 错误。

  4. 在该页面上,我检查数据库中是否存在“帖子名称”。

  5. 如果是,则生成文件。否则,显示 404 错误页面。

这种方法也意味着网页不会被谷歌索引,因此人们将无法通过这种方式搜索食谱。

我知道这不可能。那么有没有更好的方法呢?

【问题讨论】:

标签: php html mysql sql database


【解决方案1】:

好吧,您刚刚发现了 20 年前发明 PHP 的原因。它是一个模板引擎,可让您动态生成网页

在您的数据库中存储内容通常没问题。大多数内容只是数据。但是,使用该内容构建网页是完全不同的事情。既不需要在文件系统上生成实际的 .html 文件,也不需要在数据库中存储 .html 文件(完整)。

templating in PHP的概念是你创建与内容分离的格式,这样格式可以随时更改,内容可以随时插入。

例如,这是一个非常简单的模板。

<h1>Hello <?=$name?></h1>
<p>Today is <?=date('l F jS, Y')?>.</p>

无论内容如何,​​此页面的格式始终是相同的,我们可以轻松地将这些变量从我们的数据库中插入到模板中。你的问题也不例外。您可以存储模板,编写为简单的 HTML 和 PHP 代码,只需 插件 包含一些变量的内容(可能由数据库中的数据填充)。

动态创建 URL 的概念比较类似。您可以告诉您的 Web 服务器将所有请求重定向到一个主 PHP 脚本(通常称为 front-controller),例如您的 index.php,并让该脚本检查数据库中的请求 URI(使用类似 $_SERVER['REQUEST_URI'],例如)并基于该信息,您可以从数据库中提取所需的内容,使用模板生成输出,然后为客户端输出页面。

【讨论】:

  • 我不太确定我是否理解。我在第 5 步中使用了各种模板 - 我从数据库中获取数据并将其插入到模板中。我知道我可以将我的网络服务器设置为将所有请求重定向到单个页面进行处理——消除 404 错误——这很好。但是,这是否解决了我的页面没有被谷歌索引的问题?
  • 目前还不清楚这是否是个问题。如果请求实际上从服务器产生了 404 HTTP 响应代码,那么 Google 会将其视为“Page Not Found”。索引服务器状态不存在的页面对于任何搜索引擎来说都是毫无意义的。但是,这就是您的服务器上实际发生的情况吗?服务器响应 HTTP 404 Page Not Found?我以某种方式怀疑情况是否如此。您可能只是意味着您正在处理内部未找到的 404,这不好,但最终用户也不知道。
  • 哦,我明白了,如果页面“技术上”不是 HTML 文件,Google 会为其编制索引吗?我收到 404 错误,但假装没问题并显示页面。
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 2011-06-25
  • 2011-08-29
  • 2013-08-29
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多