我应该在网址中使用pk还是唯一的slug?

2 投票
3 回答
2666 浏览
提问于 2025-04-17 14:09

我想为我用Django写的购物车应用程序设置网址配置。我想知道构建网址的最佳方式是什么。

用户通过超链接访问这个网址(他们不需要在地址栏里输入)。这个链接会把指定的商品添加到他们的购物车里。我应该:

使用商品的主键(pk):

http://example.com/add/253

还是使用一个独特的别名(slug):

http://example.com/add/unique_item_slug

这两种方法在安全性或性能上有什么优势吗?有没有理由更倾向于其中一种?

3 个回答

0

在现代网页开发中,你可以在网址中使用你的主键(pk),这并不会造成问题。

如果你想要一个比较简洁的设计,我建议你这样做:

http://example.com/product/253/add

这里的 http://example.com/product/253 就是你产品的详细页面。

0

正如Ewen所说,把标题直接放在网址里是为了搜索引擎优化(SEO)。网址中包含关键词对搜索引擎的结果有很大的影响。

其实,把主键放在网址里并没有什么特别大的安全风险,除了别人可能会猜到或预测其他的主键。不过,你也不应该依赖

没人会猜到这个

作为一种安全措施。

6

使用“slug”的主要原因是为了搜索引擎优化,也就是让你的网站在搜索引擎上更容易被找到。简单来说,如果有人搜索“我的超棒小工具”,搜索结果中会显示出相关的内容,

http://example.com/products/my_awesome_widget

而且这些内容会排在前面。

http://example.com/products/423

谷歌喜欢那些对人类来说有意义的网址。理想情况下,你希望网址能尽可能多地传达页面的信息。你可以看看谷歌的SEO入门指南中关于“改善网址结构”的部分,了解更多。

因为你打算在线上销售东西,所以让网民能轻松找到你的产品非常重要。因此,使用slug绝对是个好主意。

不过,单靠slug也有一个缺点,那就是你需要把产品名称转化成一个唯一的slug。现在你可能没有对产品名称设置唯一性限制,所以你可能需要花点时间来创建这个slug(比如检查一下你要创建的slug是否已经存在)。一个常见的解决办法是把slug和产品ID结合起来。

http://example.com/products/my-awesome-widget/243

这样一来,你的slug就不需要是唯一的,但你的网址仍然包含了产品名称。

撰写回答