php - 使用 PHP、MySQL 和 mod_rewrite 从数据库获取页面

标签 php mysql mod-rewrite structure directory

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

到目前为止,我的结构如下:

domain.com/page

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

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

id, name, pid (parent id)

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

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

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

当然,我在 stackoverflow 上进行了谷歌搜索,但没有找到任何具体的帮助。也欢迎提供教程链接。

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

最佳答案

这里的主要问题是 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');
}

关于php - 使用 PHP、MySQL 和 mod_rewrite 从数据库获取页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558132/

相关文章:

php - 使用 php 登录系统重定向到存储在 mysql 服务器上的链接

php - 我如何在 PHP 中使用 MySQL NOT NULL?

PHP MYSQL 错误 : Unknown column 'status' in 'where clause'

mysql - 使用 cakephp 在消息表 mysql 中获取用户之间的唯一对话

regex - RewriteRule 导致速度变慢

apache - htaccess - 子域作为 GET 参数

php - .htaccess错误无法按预期工作

php - 如何使用 PHP 检查数据是否已存在于 MySQL 中

javascript - 如何设置href?

mysql - MySQL : Errorno 150 是什么原因