0

我目前正在构建自己的(非常小的)CMS。我正在使用 PHP/MySQL 和 mod_rewrite 从数据库中动态获取页面请求。

到目前为止,我有一个简单的结构,例如:

domain.com/page

这一切都很好。但现在我想添加“文件夹”或“类别”。

该表具有所需的字段(简化):

id、name、pid(父 id)

我还研究了如何从数据库构建导航结构,但到目前为止我还没有弄清楚如何使用 mod_rewrite 和 PHP 从数据库中获取请求的页面。

  • 如何获取请求的 URL,例如
    domain.com/folder1/page
    或更复杂的
    domain.com/folder1/folder2/folder3/.../folderN/page
  • 如何区分“folder1”中的文档“page”与“folderN”中的文档“page”?
  • 如何处理不存在的文件夹,如上例中的“folder2”?

嗯,老实说我现在有点无助,希望这里有人愿意帮助我。:-)

当然,我在stackoverflow中搜索和搜索,但我没有找到任何具体的帮助。也欢迎提供教程链接。

提前致谢并致以最诚挚的问候!

4

1 回答 1

0

这里的主要问题是 Apache 无法与 MySQL 对话,因此它不知道哪些文件夹存在或不存在。

大多数 CMS(如 wordpress)解决此问题的方法是将每个不是针对现有文件或目录的请求重定向到 CMS 的入口脚本。

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .? index.php [L]

然后在 index.php 中检查$_SERVER['REQUEST_URI']请求的内容并进行相应处理。

$parts = explode('/', ltrim($_SERVER['REQUEST_URI'], '/'));
foreach($parts as $part)
{
    // see what the part is for, and if it does not exist
    // if you find that the request does not exist, send a 404 back to the browser
    // header($_SERVER['HTTP_PROTOCOL'].' 404 Not Found');
}
于 2013-05-16T07:59:54.120 回答