【问题标题】:Strategy for permanent links (not wordpress)永久链接的策略(不是 wordpress)
【发布时间】:2015-03-08 19:08:23
【问题描述】:

我正在构建一个小型数据库驱动的 PHP CMS。我正在尝试为这种情况制定最佳策略:

我有一个这样的网址:

http://www.my.com/news/cool-slug

有人保存或分享此网址(或被 Google 编入索引)。

现在我意识到 slug 不太正确,并将其更改为:

http://www.my.com/news/coolest-slug

Google 和之前保存该网址的用户会遇到404 错误。

这是最好和常见的解决方案(显示 404)还是我应该在我的数据库中保留一个表,其中包含映射到页面 ID 的所有生成 URL 的历史记录并使用 301 标头重定向? 这会不会对我的系统造成不必要的负载(此表可以获取大量记录...)?

【问题讨论】:

  • 取决于网站、流量和他们的用户群。将之前的 slug 存储在当前的 slug 旁边而不是所有内容的完整历史记录可能会更高效。
  • 但是我应该担心并构建一个系统来将旧 URL 重定向到新 URL,还是应该让它们达到 404?像 Wordpress 这样的系统有什么作用?

标签: php mysql hyperlink


【解决方案1】:

许多网站(据我所知包括 StackOverflow)使用的一个非常常见的解决方案是在 URL 中包含 ID。 slug 仅用于 SEO/美容/其他方面,但不用于识别页面。

示例:http://stackoverflow.com/questions/27877901/strategy-for-permanent-links-not-wordpress

只要您拥有正确的 ID,您使用什么 slug 都没有关系。该站点只会检测到 slug 错误,并生成到正确的重定向。例如,以下 URL 是有效的:

http://stackoverflow.com/questions/27877901/old-slug

如果出于某种原因您不想在 URL 中使用 ID,那么您要么禁止更改(许多新闻网站都这样做:您会注意到有时 slug 和新闻文章的标题不匹配),或者您的当蛞蝓改变时,必须忍受偶尔的404。我从来没有见过任何网站有一个系统来保存 slug 历史,因为它可能很烦人(例如,你将无法“重用”slug)。

【讨论】:

  • Wordpress 会跟踪帖子的这些 slug 更改。它使用wp_postmeta 表并添加与post_id 相关的_wp_old_slug 键。我认为如果在显示 404 之前没有找到其他匹配项,它会搜索此表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2012-05-07
  • 2011-05-18
  • 2012-12-21
相关资源
最近更新 更多