我是 .htacces 的新手,多年来我一直试图从以下位置获取我的域:
www.domain.com/post.php?post_id=20
像这样的东西:
www.domain.com/post/this-is-the-title/
正如我所说,我是 .htaccess 的新手,但任何事情都会有所帮助!注意:我会以某种方式从 SQL 数据库中获取我的博客文章的标题
我是 .htacces 的新手,多年来我一直试图从以下位置获取我的域:
www.domain.com/post.php?post_id=20
像这样的东西:
www.domain.com/post/this-is-the-title/
正如我所说,我是 .htaccess 的新手,但任何事情都会有所帮助!注意:我会以某种方式从 SQL 数据库中获取我的博客文章的标题
如果页面标题是数据库驱动的(或者是动态的),我看不出你怎么能摆脱 .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"];
您不能使用 .htaccess 执行此操作,因为您需要“以某种方式从 SQL 数据库中获取博客文章的标题”,使用 PHP 进行重定向。:)
你不能。您必须将标题放在查询字符串上。.htaccess 无法安全地从数据库中获取任何内容。既然要重写 url,为什么不直接在 URI 中写文章标题呢?