1

在我的应用程序中,我目前正在使用允许输入 Title 和 Slug 字段的表单。现在我一直在为蛞蝓的事情苦苦挣扎,因为我永远无法一劳永逸地决定如何处理它们。

1) 使 Title 和 Slug 独立

我应该允许用户分别输入 Title 和 Slug 吗?这是我第一次拥有的。我还有一个选项,如果用户没有输入 Slug,它是从 Title 派生的。如果两者都输入,则 Slug 字段优先。

2) Derive Slug from Title,当插入内容时,这就是 Slug,没有更多的变化

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

3) 现在我又在考虑允许用户更换 slug

虽然我不认为它有那么有用。有人已经添加的内容,花了多少时间编写它,甚至需要更改标题或 slug 多少次?我不认为这是很多次。

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

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

如果有人为此提供了示例数据库设计,如果您在此处分享将不胜感激。

4

4 回答 4

2

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

于 2012-10-12T14:22:04.113 回答
1

我个人建议让用户编辑页面记录的标题和其他内容。一旦他们这样做了,您就可以从标题(或您喜欢的任何其他内容)中获取 slug。如果他们更改标题,则 slug 可以更改,但您可以保留与同一页面关联的旧 slug 的记录。如果有人带着旧的蛞蝓来到该网站,那么您可以向他们发送 301 响应并将他们重定向到新页面。这将通过您的路由处理的拦截页面。

另一个问题是,如果他们要更改标题,那肯定是带有新内容和新内容的新页面吗?

想法?

于 2010-03-25T22:26:29.710 回答
1

我刚刚和一个客户一起经历了所有这些,整理了围绕 URL 的规则等。

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

亲爱的:我们会比撒切尔更深更硬

可能成为一个蛞蝓:

alistair-darling-cut-deeper-玛格丽特-撒切尔

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

亲爱的,将比撒切尔更深更深

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

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

作者真正应该改变蛞蝓的唯一一次是他们发表了一个错字或诽谤性的东西。

于 2010-03-26T09:12:25.087 回答
0

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

或者正如@WestDiscGolf 所说,记录所有旧的蛞蝓并发送重定向。

于 2010-03-26T08:50:53.383 回答