php - 友好 URL 数据库策略

标签 php mysql rest

我有一个网站,我想开始使用友好的 URL。
所以不是:

http://server.com/company.php?id=12

我可以使用:

http://server.com/company/steaks_r_us

我知道如何在 .htaccess 端执行此操作,但我不知道如何通过数据库调用在后端进行设置,尤其是在公司名称可能不是唯一的情况下(多个位置)例如)。

我想过在检查重复后将友好的 url 插入数据库,但我很好奇是否有更好的方法

最佳答案

无论是 ID 还是用户友好的字符串(如公司名称),您都需要它是唯一标识符。你不会避免的。

有几个选项。

  1. 一些网站将 ID(主键)添加到用户友好名称中,例如:

http://server.com/company/steaks_r_us_12

或在 URL 的其他部分,如:

http://server.com/company/12/steaks_r_us

然后您可以轻松地从 URL 中获取 ID,而且它看起来仍然不错。

  1. 另外,正如 Wheatin 所建议的,您可以在您的数据库中创建一个字段作为此唯一标识符。

在这种情况下,您在数据库中创建公司行时需要一些额外的逻辑。那当然是因为你必须以某种方式处理重复的名称。例如,你可以在这个值的和处添加一个数字(facebook 做类似的事情),所以如果 steaks_r_us 出现重复,你会插入一个值 steaks_r_us2 那么您将拥有这些公司的唯一 URL:

http://server.com/company/steaks_r_us

http://server.com/company/steaks_r_us2

关于php - 友好 URL 数据库策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035823/

相关文章:

php - Laravel-Excel 导出的 Excel 工作表不会将列中的日期值转换为日期

php - 提交按钮 onclick 事件上的 JavaScript 函数未验证文本框

java - 如何在 MySQL 中使用 JPA 自动生成区分大小写的列

java - hibernate 插入错误

wordpress - 如何通过 Wordpress REST API 对 LearnDash 中 protected 数据的远程访问进行身份验证?

node.js - 是否有人使用 Node 中的 zip 部署在基于消耗的层中的 Azure 函数中执行函数部署?

php - MYSQL中Case语句中AND的使用

php - AJAX:打开另一个div中的内容

mysql优化: is there any way to make this faster?

MYSQL触发器在同一个表中插入列值