0

我是 .htacces 的新手,多年来我一直试图从以下位置获取我的域:

www.domain.com/post.php?post_id=20

像这样的东西:

www.domain.com/post/this-is-the-title/

正如我所说,我是 .htaccess 的新手,但任何事情都会有所帮助!注意:我会以某种方式从 SQL 数据库中获取我的博客文章的标题

4

3 回答 3

4

如果页面标题是数据库驱动的(或者是动态的),我看不出你怎么能摆脱 .htaccess 重写。在 PHP 脚本中使用路由会更有意义。

我在这里写了一个非常简单的路由方法。它仅供人们进入该主题,但您应该能够基于此构建数据库驱动的路由器。

本质上,通过 index.php 路由您的所有流量,获取请求 URI 并决定要加载哪些资源。

[编辑]

让我详细说明一下,使用我博客文章中的信息。

假设您已设置并运行您的站点,首先将流量定向到 index.php。您在 .htaccess 中执行此操作,可以这样完成:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

然后,在 index.php(或从 index.php 调用的脚本)中,您可以获得请求 URI:

$uri = $_SERVER["REQUEST_URI"];

好的,到目前为止一切顺利。现在让我们假设您的数据库包含页面内容以及页面别名。uri 很可能是页面别名,所以你需要做的就是这样:

$pdo = new PDO(/* your db connection params */);
$page = $pdo
    ->query("SELECT * FROM pages WHERE alias = :alias",
    array("alias" => $uri)
    )
    ->fetch();

此时,您应该拥有与 URI 字符串中的标题(或别名)相对应的页面内容。您现在需要做的就是以您想要的任何方式显示它:

echo $page["content"];
于 2012-09-24T15:41:24.237 回答
0

您不能使用 .htaccess 执行此操作,因为您需要“以某种方式从 SQL 数据库中获取博客文章的标题”,使用 PHP 进行重定向。:)

于 2012-09-24T15:43:06.753 回答
0

你不能。您必须将标题放在查询字符串上。.htaccess 无法安全地从数据库中获取任何内容。既然要重写 url,为什么不直接在 URI 中写文章标题呢?

于 2012-09-24T15:41:18.963 回答