使用数据库主键作为 URL 标识符的优缺点是什么?例如,http://localhost/post/view/13 - 13 是我的帖子表的主键。
一些像 reddit 这样的网站使用我认为是唯一的 id,它不是主键但仍然是唯一的来帮助识别链接:
http://www.reddit.com/r/funny/comments/7ynin/the_mystery_of_irelands_worst_driver/
只要/7ynin/相同,您就可以将 URL 的最后一部分更改为您想要的任何内容。
Digg 似乎使用链接标题的 slug 来标识链接:
http://digg.com/space/Liquid_Water_Recently_Seen_on_Mars
如果我没记错的话,默认的 WordPress 安装使用 index.php?p=# 作为他们的 id,直到启用花哨的 url。
我可以理解为什么为了 SEO 的缘故,您希望拥有尽可能多的信息性网址,但我只是想看看使用主键是否存在安全风险,或者只是形式不佳。
最佳答案
您总是希望向用户提供一个不错的 URL——而不是一些讨厌的自动生成的 ID。但我认为您不应该将所说的“友好网址”作为主键。您仍然应该使用“经典”自动递增的数字 PK,并有第二列是唯一的“友好 url”。为什么?
表,任何有
与您的内容表的关系
可以使用数字主键。
这意味着更小的索引和更低的
内存使用。
更改友好网址。如果你有
有一个数字主键,你没有
必须更新您的任何受抚养人
表(或让数据库通过
级联更新)。
你可以抽象出 URL 位
进入另一张 table 。说表可以
然后存储“传统” URL 映射
该问题重定向到主要
“真实”网址映射。那么当用户
想要更改友好 URL,
你不必打破所有
入站旧 URL。做不到
如果您的主键是
“友好网址”。
底线:友好的网址? hell 是的。使用它们作为主键?一定不行。
关于security - 使用主键/ID 字段作为 URL 中的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566996/