繁体   English   中英

人性化的唯一网址

[英]Human friendly Unique URL

因此,我们有一个“不起眼的”网站,正在为其构建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显示完全不相关的帖子。

显而易见的解决方案是在标题编辑后重新创建子弹。 但是,我们将如何处理用户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应该是。

您还可以通过将“ hello-world-1”转换为整数来检索“ 1”来执行http:/// post / read / hello-world-1方法。 那意味着您将不得不从页面标题中过滤数字,但是我个人认为它看起来更乱。

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

简短的答案是您已经知道并且不会喜欢的答案,如果您希望保持当前的URL方案不变,那么您就必须跟踪消息的更改并修改应用程序以做出相应的响应。 除了以某种方式跟踪“旧”块并将其添加到路由表之外,实际上没有其他方法可以使“旧”块保持活动状态。 我建议将“旧”块塞放在专门为此目的设计的单独商店中,以便您可以高效地进行路由。 然后,您可以创建某种有效的路由逻辑,该逻辑说:“是否可以识别此子弹?是=>路由,否=>这是旧的子弹吗?是=>路由,否=>找不到子弹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM