Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 搜索引擎优化友好的URL,其中使用的短语可能会在Rails中发生变化_Ruby On Rails - Fatal编程技术网

Ruby on rails 搜索引擎优化友好的URL,其中使用的短语可能会在Rails中发生变化

Ruby on rails 搜索引擎优化友好的URL,其中使用的短语可能会在Rails中发生变化,ruby-on-rails,Ruby On Rails,假设我有,我希望它指向id为3的项目。过了一段时间,我更改了项目的名称,现在更改了它的名称(可能还会更改很多次)。我希望所有这些URL都指向第3项。简单地保留一个[strings,item_id]表并对其进行查找是否有效?有更好的方法吗?或者你可以像stackoverflow.com那样做 http://stackoverflow.com/questions/2887068/seo-friendly-urls-where-the-phrase-used-may-change-in-rails

假设我有,我希望它指向id为3的项目。过了一段时间,我更改了项目的名称,现在更改了它的名称(可能还会更改很多次)。我希望所有这些URL都指向第3项。简单地保留一个[strings,item_id]表并对其进行查找是否有效?有更好的方法吗?

或者你可以像stackoverflow.com那样做

http://stackoverflow.com/questions/2887068/seo-friendly-urls-where-the-phrase-used-may-change-in-rails
您将问题ID(2887068)保留在链接中,在该链接中,文本部分可以更改,但仍将位于同一页面中<代码>http://stackoverflow.com/questions/2887068/whatever-you-put或
http://stackoverflow.com/questions/2887068/
会将您发送到同一页面

因此,对于您的示例,它将是:

http://www.mysite.com/items/3/I-Like-Cheeseburgers

或者你也可以像stackoverflow.com一样

http://stackoverflow.com/questions/2887068/seo-friendly-urls-where-the-phrase-used-may-change-in-rails
您将问题ID(2887068)保留在链接中,在该链接中,文本部分可以更改,但仍将位于同一页面中<代码>http://stackoverflow.com/questions/2887068/whatever-you-put或
http://stackoverflow.com/questions/2887068/
会将您发送到同一页面

因此,对于您的示例,它将是:

http://www.mysite.com/items/3/I-Like-Cheeseburgers
你也可以使用插件

使用
:使用\u slug
选项,它维护永久链接的历史记录,并提供重定向到当前URL等的解决方案

class YourModel < ActiveRecord::Base
  has_friendly_id :title, :use_slug => true
end
classyourmodeltrue
结束
有关更多信息,请参阅。

您也可以使用插件

使用
:使用\u slug
选项,它维护永久链接的历史记录,并提供重定向到当前URL等的解决方案

class YourModel < ActiveRecord::Base
  has_friendly_id :title, :use_slug => true
end
classyourmodeltrue
结束
有关更多信息,请参见。

在您的型号中

class Article < AR::Base
  def to_param
    "#{id}-#{name.parameterize}"
  end
end
类文章
您的链接如下所示:

当您尝试获取对象时,执行
Article.find(params[:id])
将自动将“3-i-like-cheeseburgers”转换为整数并获取正确的对象。这允许更改名称,同时保持指向同一文章对象的链接。

在您的模型中

class Article < AR::Base
  def to_param
    "#{id}-#{name.parameterize}"
  end
end
类文章
您的链接如下所示:


当您尝试获取对象时,执行
Article.find(params[:id])
将自动将“3-i-like-cheeseburgers”转换为整数并获取正确的对象。这允许名称改变,同时保持指向同一文章对象的链接。

这里考虑的一件事是SEO回链接。如果有人链接到您的站点,然后您将其更改为,那么第一个链接可能会得到404页,网站所有者可能会删除该链接。因此,尝试选择一个解决方案,将降低你不会失去任何入站流量或SEO。这里要考虑的一件事是SEO回链接。如果有人链接到您的站点,然后您将其更改为,那么第一个链接可能会得到404页,网站所有者可能会删除该链接。所以,试着选择一个解决方案,让你不会损失任何入站流量或搜索引擎优化。