您认为在 Rails 中(动态)创建 SEO 友好 URL 的最佳方法是什么?
7 回答
覆盖to_param
模型类中的方法,以便将默认数字 ID 替换为有意义的字符串。例如,这个问题在 URL 中使用了best-permalinking-for-rails 。
Ryan Bates 有一个关于这个主题的 Railscast。
ActiveSupport 在 Rails 中有一个新方法来帮助这个 - String#parameterize。相关的提交在这里;提交消息中给出的示例是 "Donald E. Knuth".parameterize => "donald-e-knuth"
结合 John Topley 提到的 to_param 覆盖,这使得更友好的 URL 更容易。
rsl 的 stringex非常棒,认为 permalink_fu 做得对。
我主要to_param
按照 John Topley 的建议使用。
请记住放置索引,以便您在 to_param 中使用的任何内容都可以快速搜索,否则您最终会在每次访问时进行全表扫描。(不是性能增强器!)
一个快速的解决方法是将 ID 放在其中的某个地方,在这种情况下 ActiveRecord 将忽略它的其余部分,因为它只是在 id 上搜索。这就是为什么你会看到很多带有http://example.com/someController/123-a-half-readable-title之类的 URL 的 Rails 站点。
从我使用 Rails 的经验中获得关于这个和其他 SEO 观察的更多细节,你可能会发现我网站上的这个页面很有用。
对我来说friendly_id 工作得很好,它也可以生成slug,所以你不需要关心重复的url,也支持范围。
查看 permalink_fu 插件(从 Mephisto 中提取)... Git 存储库位于此处。
我制作了一个小而简单的 gem,它可以更容易地覆盖 to_param 方法。可以在这里找到。