【发布时间】:2015-08-26 20:04:04
【问题描述】:
我不确定这叫什么,但我已将其标记为 mod-rewrite 和 .htaccess,因为这些类别中有几个类似的问题。
我的所有页面都以 .php 结尾,如何更改它以删除扩展名并重写一般 URL 以更友好/可读?
一个具体的例子是一个项目页面,其中有指向 /dir/page.php?itemno=val 形式的项目的链接,其中 val 来自数据库,而我要替换它的文本来自表 val 被存储在。
$getNames = $db->prepare("
SELECT val, name
FROM items
");
$getNames->execute();
结果集可能如下所示:
val | name
1 | john
2 | bill
3 | anna
4 | tomm
5 | sara
... | ...
如何重写 URL 以使以下情况发生?
/dir/page.php?itemno=1 becomes /dir/page/john/
/dir/page.php?itemno=2 becomes /dir/page/bill/
/dir/page.php?itemno=3 becomes /dir/page/anna/
...
结果集足够小(20 个值),我可以对其进行硬编码而不是从 SQL 中获取,但只是如何重写 url 让我无法理解。我不确定它是如何完成的。
【问题讨论】:
-
mod_rewrite规则由网络服务器 (apache) 完成,无法访问数据库中的值。您可以创建 URL/dir/page/john/,但随后您必须在数据库中查找 ID(我假设没有任何重复的名称)。
标签: php .htaccess url mod-rewrite