我是.htacces的新手,多年来我一直试图从我的域名获取:
www.domain.com/post.php?post_id=20
这样的事情:
www.domain.com/post/this-is-the-title/
正如我所说,我是.htaccess的新手,但任何事情都会有所帮助! 注意:我会以某种方式从SQL数据库中获取我的博客帖子的标题
答案 0 :(得分:4)
如果页面标题是数据库驱动的(或其他动态的),我看不出你如何逃避.htaccess重写。在PHP脚本中使用路由会更有意义。
我写过一篇非常简单的路由方法here。它只适合人们进入主题,但您应该能够基于此构建数据库驱动的路由器。
基本上,通过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"];
答案 1 :(得分:0)
你做不到。您必须将标题放在查询字符串上。 .htaccess无法安全地从数据库中获取任何内容。 由于您要重写URL,为什么不简单地在URI中写帖子标题?
答案 2 :(得分:0)
你不能用.htaccess这样做,因为你需要以某种方式从SQL数据库获取“博客帖子的标题”,用PHP重定向。 :)