关于ASP.NET MVC内容系统中slu slu的一些问题

时间:2010-03-25 22:16:23

标签: asp.net-mvc content-management slug

在我的应用程序中,我目前正在使用允许输入Title和Slug字段的表单。现在我一直在努力解决这个问题,因为我无法一劳永逸地决定如何处理它们。

1)制作标题和插曲无效

我是否应该允许用户同时输入Title和Slug?这是我第一次。我还有一个选项,如果用户没有输入Slug,它来自Title。如果两者都输入,则Slug字段优先。

2)从标题中导出Slug,当插入内容时,它就是Slug,不再有更改

然后,我切换到只有标题字段并从标题派生Slug。在这样做时,我发现现在我必须更改允许用户输入slug的所有表单。这样做也可以防止用户更改Slugs - 他们可以更改标题,但它对Slug没有影响。你可以把它想象成Slug是唯一的ID。

3)现在我再次考虑允许用户更改slug

虽然我认为它没有那么有用。有人已经添加的内容,花在编写它上面的时间,甚至需要更改Title或slug?我认为不是这么多次。

第三个选项的最大问题是如果我使用Slugs作为ID,我需要在Slug更改时更新所有地方的引用。或者维护一个包含一些Slug历史记录的表格。

我希望你对这些问题有什么看法?

如果有人为此设计了示例数据库,请在此处分享。

4 个答案:

答案 0 :(得分:2)

如果您决定允许用户编辑slug,您可以在URL中包含内容的ID,并在slug与当前slug不匹配时执行301 Moved Permanently。例如,如果/product/42/black-bucket/现在是/product/42/shiny-black-bucket/,您可以重定向到新的slug。我看到建议不允许为您的URL设置任意slug,因为这打破了搜索引擎抓取工具的规范链接的概念,并允许恶意用户游戏您的结果。

答案 1 :(得分:1)

我个人建议让用户编辑页面记录的标题和其他内容。一旦他们完成了这个,你可以从标题(或任何你想要的东西)中获得slug。如果他们改变了标题,那么slug可以改变,但你可以记录与同一页面相关的旧slu ..如果有人使用旧slug访问该站点,那么您可以向他们发送301响应并将其重定向到新页面。这将通过您的路由处理的拦截页面。

另一个问题是,如果他们正在更改标题,肯定是一个新内容和一个新的slug的新页面?

思想?

答案 2 :(得分:1)

我刚刚与客户进行了所有这些工作,整理了有关网址的规则等。

你的slug应该至少略微独立于标题,如果只是为了确保你可以取出标准的“停用词” - 大多数SEO会建议页面路径尽可能丰富的关键字,所以页面标题的:

  达林:我们会比撒切尔更深刻,更强硬。

可能成为一个slu :::

  

alistair-darling-cut-deeper-margaret-thatcher

但是如果可能的话,你应该在作者创建帖子时尽可能地自动化它,这样当他们选中/移出Title字段时,你用一个删除了所有字符串的字符串填充Slug / Name / Path字段符号,(理想情况下)删除了一个商定的停用词列表,并用连字符替换了空格,因此该标题的自动段塞可以是:

  

宠儿意志切-更深强硬高于撒切尔

但是你需要让作者有能力进行调整。

我们还指定此自动化仅在作者创建帖子时发生,因此后续编辑不会自动更改slug,以确保我们不会遭受外部链接腐烂(我们正在使用的CMS)管理所有内部链接。)

作者应该真正改变slu it的唯一一次是,如果他们发布了一个拼写错误,或者是一些诽谤。

答案 3 :(得分:0)

如果只允许用户在页面处于草稿时编辑标题或slug。当页面发布时,标题和slug成为永久性的。

或者@WestDiscGolf说,记录所有旧slu and并发送重定向。