gpt4 book ai didi

java - 人类友好的唯一 URL

转载 作者:行者123 更新时间:2023-12-01 12:46:41 25 4
gpt4 key购买 nike

所以我们有这个“博客”网站,我们正在为其构建一个 better URL scheme 。基本思想是将 URL 转换为 human and SEO friendly structure 。我有一个生成 URL slug 的函数根据帖子的标题。

一条记录现在在数据库中看起来有点像这样:

    post_id         post_title              post_url_slug
--------------------------------------------------------------
1 Hello World hello-world
2 Another Post another-post

所以现在我们可以改变

http://<site>/post.cgi?action=read&id=1

http://<site>/post/read/hello-world

为了确保网址唯一,我们计划在其中附加 post_id。

现在http://<site>/post/read/hello-world

变成http://<site>/post/read/hello-world-1

所有这些都非常有效。我的主要问题是,如果博主修改了他的标题,我们应该如何处理?我们不想hello-world-1显示一个完全不相关的帖子。

显而易见的解决方案是在编辑标题时重新创建 slug。但是我们将如何处理用户 bookmarks/google tracking/SEO crawling ?我们可以做 301 redirect ,但是保留 URL slug 更改的完整历史记录并像这样重定向它们很快就会变得难以管理。

此外,我真的更喜欢将路由/重写/重定向保留在应用程序内,而不是动态自定义 .htaccess 或其他内容。原因是,如果它在应用程序中出现问题,只有部分用户会遇到问题,但我们都知道当像 .htaccess 这样的文件时会发生什么。着火了!

有人有管理这种情况的见解/经验吗?非常欢迎任何意见!

最佳答案

我假设页面是根据 URL(特别是 id)动态创建的。在这种情况下,为什么不将页面 id 作为自己的段,即

http:///post/read/1/hello-world

然后,您可以允许 http:///post/read/1/another-hello-world 显示同一页面,或者让您的路由器检查 id 是否与标题匹配,如果不匹配,它会重定向到正确的 URL。

如果每个错误的标题都重定向到正确的 URL,那么您就不必保留更改历史记录。

除非它是唯一的,否则标题不应用于说明要显示的内容,而应使用唯一的 ID。

你也可以这样做http:///post/read/hello-world-1方法通过将“hello-world-1”转换为整数来检索“1”。然而,这意味着您必须从页面标题中过滤数字,而且我个人认为它看起来是一个更困惑的 URL。

编辑:我怀疑这就是 Stack Overflow 正在做的事情stackoverflow.com/questions/24637589/helloworld重定向到此页面 - 他们只需要“24637589”即可知道要显示的页面和网址。

关于java - 人类友好的唯一 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com