【问题标题】:How do I rewrite URL's based on title?如何根据标题重写 URL?
【发布时间】:2011-05-23 18:18:52
【问题描述】:

这是一个相当开放的问题,我只是在寻找可能的最佳途径。

用户可以发布带有标题的链接。我希望我的 URL 用于 SEO 目的以显示这些标题。与我认为 stackoverflow 的工作方式大致相同。

所以如果标题是“我的 foobar 刚刚和我的猫亲热”

我希望网址是:www.website.com/posts/My-foobar-just-made-out-with-my-cat

有什么想法吗?

提前非常感谢!

【问题讨论】:

    标签: ruby-on-rails url url-rewriting url-routing


    【解决方案1】:

    我在旧的 Rails 2.x 应用程序中使用了它。可能有更好的方法来擦除标题...

    (进入你的模型)

    def to_param
      seo_uri
    end
    
    def seo_uri
      "#{self.id}-#{self.title.gsub(/[^a-z0-9]+/i, '-').gsub(/-{2}/, '-').gsub(/-$/, '')}"
    end
    

    希望这会有所帮助!

    更新

    对此答案的评论表明 Rails 3 用户可以使用一种新方法:#parameterizeRails API document for this method 显示了它应该如何使用(剪切-粘贴):

    class Person
      def to_param
        "#{id}-#{name.parameterize}"
      end
    end
    
    @person = Person.find(1)
    # => #<Person id: 1, name: "Donald E. Knuth">
    
    <%= link_to(@person.name, person_path %>
    # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
    

    【讨论】:

    • 布莱恩太聪明了!那是如何重写标准 URL 的呢?
    • 没有 parameterize() 这样做吗?
    • @Paul - 直到你提到它才知道新的变化!感谢您的提醒!我正在更新我的答案,以包括 Rails 3 用户的这个......
    • 哇,太棒了。惊人的答案!我不知道
    • 参数化在 Rails 2.3 中可用。
    【解决方案2】:

    有一个非常棒的插件FriendlyId 可以为您处理所有这些。大量非常聪明的功能,包括范围和标题更改时 301 重定向的处理。这与 stackoverflow 和 Brian 的方法不同,因为 id 没有在 url 中使用。

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 2021-06-29
      • 1970-01-01
      • 2011-09-19
      • 2010-11-25
      • 2011-10-19
      • 2011-07-29
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多