我确信我做错了,并且有更好的方法来做到这一点。
我刚刚完成了一个美食博客网站。帖子被上传到数据库中。 HTML 文件是在需要时使用 SELECT 语句中的信息生成的。
基本上,我认为创建新的 HTML 文件并以这种方式存储页面并不明智,而是动态创建它们。
这是我的(糟糕的)方法:
用户点击链接或输入 URL
URL 的结构如下:www.website.com/name-of-post
没有名为 name-of-post.php 的 HTML 文件,因此它会重定向并显示 404 错误。
在该页面上,我检查数据库中是否存在“帖子名称”。
如果是,则生成文件。否则,显示 404 错误页面。
此方法还意味着这些页面不会被 Google 索引,因此人们将无法通过这种方式搜索菜谱。
我知道这是不对的。那么有更好的方法吗?
最佳答案
好吧,您刚刚发现了 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']
),并根据该信息,您可以从数据库中提取所需的内容,使用模板生成输出,然后为客户端提供页面。
关于php - 从数据库动态加载博客文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685382/