php - 没有 id 的漂亮链接

标签 php mysql mod-rewrite friendly-url

我正在考虑为新网站实现漂亮链接的选择。

我了解如何使基础知识发挥作用,例如:

/view/postTitle/7895

我可以直接选择 id 7895 并忽略标题。

但是,我发现一些网站设法完全摆脱 ids:

/view/postTitle

这是如何工作的?

我能想到的唯一方法是,在每个请求中,pageTitle 作为字符串发送,并且一些代码执行一些 SQL 检查以返回正确的 id。然而,这将意味着大量潜在昂贵的 SQL 查询,不是吗?特别是当您有很多帖子时。

此外,这意味着每次有人创建帖子时,我都需要为该帖子生成一个唯一的、URL 友好的字符串。我需要检查数据库,直到获得唯一的数据库。这一切似乎太多了不是吗?

我是不是看错了?或者是否有现成的 API 和工具可以让这一切变得更容易、更高效?

我正在使用 PHP/MySQL、Apache。

谢谢

最佳答案

创建一个对帖子标题进行规范化/清理的函数 - 一种简单的方法可能是对原始标题的 urlencode() 表示进行哈希处理。将其存储为“id”而不是数据库生成的数值,并且您的 SQL 不需要显着更改。

关于php - 没有 id 的漂亮链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1541587/

相关文章:

php - 如何使用 Doctrine 2.0 ORM 模型来选择数据库数据?

php - 绕过禁用的 DL 函数 PHP Linux

MySql Workbench 无法打开 SSH 隧道

php - 将 mysql_query 的结果放入 php 数组中

regex - codeigniter 301 使用路由器重定向旧 url 并且没有重定向

apache - .htaccess 如何工作?

php - 如何为特定环境覆盖 Symfony 的安全性?

php - IntlDateFormatter::format():datefmt_format:采用数组或整数时间戳值或 DateTime 对象 (SonataSanBox)

mysql - 将两列限制为两个字段都必须有数据或两个字段都必须为 NULL

regex - %{REQUEST_URI} 总是以斜杠开头吗?