【问题标题】:Rails Mass 301 redirect - will it cause routes.rb issues?Rails Mass 301 重定向 - 它会导致 routes.rb 问题吗?
【发布时间】:2016-01-18 19:11:50
【问题描述】:

我有大量需要重定向的 URL(超过 600 个),它们都是唯一的。它们都是命名的 URL(即 example.com/this-shoe-name 和 example.com/that-blue-product),所以我不能使用 like this 来半动态地做到这一点,而且它们也没有'不重定向到任何类似的东西(即 www.example.com/this-shoe-name 重定向到 newexample.com/catalog/shoes 与 newexample.com/this-shoe-name)。

我想我可以编写 600 条重定向规则(尽管我宁愿避免使用它),但在我看来这会使 routes.rb 文件相当笨拙。

在 routes.rb 中少写了 600 条规则,是否有最佳实践方法来做到这一点?在 routes.rb 中有 600 条规则会让我的应用程序变慢/破坏吗?

【问题讨论】:

  • 您能否提供更明确的重定向以及为什么需要发生这种情况的合理解释?我很难理解为什么您需要这种广泛的重定向,以及为什么 RESTful 实例会改为重定向到索引页面 "www.example.com/this-shoe-name 重定向到 newexample.com/catalog/shoes "
  • @engineersmnky 简短的回答是我正在精简客户的遗留系统,他们的命名约定非常糟糕。我正在做什么重做命名约定,但仍然重定向可能访问旧 URL 的用户(极不可能,但我要做什么,告诉他们不?也许我应该......)。因此,如果有人访问 www.example.com/this-shoe-name,我仍然可以让他们进入目录。更不用说特定鞋款停产了,我宁愿让人们远离厄运的 404 页。如果可能的话。
  • 完成后“example.com”会留下什么吗?如果不是,那么为什么不一起将“example.com”重定向到“newexample.com”或者只是更改DNS。那么你可以在“newexample.com”的底部找到一条全部路线吗?只是一个想法,因为您提出的建议将非常繁琐,更不用说容易出错了。
  • @engineersmnky 是的,这听起来很正确——这个项目的名称是乏味且容易出错。主要是为了安抚这里的客户,这是我什至考虑这个的唯一原因....也就是说,归根结底,这是一个 SEO 问题。他们希望他们的旧链接将他们以前的 SEO 影响力带到新链接。这意味着(我相信)捕获所有重定向将消除设置重定向的大部分要点。

标签: ruby-on-rails ruby redirect routes


【解决方案1】:

我不知道它是否会减慢路由处理速度,但我对此表示怀疑。只要你把它们放在最后,你真的在​​乎吗?和你一样,我不喜欢它造成的混乱。

另一种方法是创建一条捕获所有路由或拯救 404,然后在“旧 urls”表中查找 URL,如果找到匹配项,则重定向到新 url。

您甚至可以将该“旧网址”作为属性绑定到您的产品或类别模型中。然后搜索,如果找到重定向到该模型的正确 url。过去我已经做到了这一点,并取得了相当大的成功。奖励是您可以在管理工具中公开它并让客户将它们全部输入:-)

【讨论】:

  • 我不在乎它是否会减慢 那些 特定路由,但我不希望根 url 受到影响(例如),因为 routes.rb 文件太重了。我同意你的观点:我对此表示怀疑,但我只是不知道。我什至不知道如何使用您建议的 404 解决方法,所以也许我现在会满足于混乱和烦人。不过,您的最后一个解决方案听起来像是我最喜欢的 :) 让客户来做吧!
  • 路线是第一次匹配首先使用的交易,所以应该没问题。
  • 我就是这么想的。感谢您的确认!
猜你喜欢
  • 2012-03-13
  • 1970-01-01
  • 2015-08-11
  • 2011-01-12
  • 2016-07-19
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多