我在一些模型中添加了 slug,但是由于 SEO,我需要从旧链接进行 301 重定向:旧的:
http://host.com/foo/1
新的:
http://host.com/foo/foo_slug
问题:这种情况下如何实现301重定向?是否可以从大写链接实现 301 重定向?像这样:
http://host.com/foo/FOO_SLUG -> http://host.com/foo/foo_slug
我在一些模型中添加了 slug,但是由于 SEO,我需要从旧链接进行 301 重定向:旧的:
http://host.com/foo/1
新的:
http://host.com/foo/foo_slug
问题:这种情况下如何实现301重定向?是否可以从大写链接实现 301 重定向?像这样:
http://host.com/foo/FOO_SLUG -> http://host.com/foo/foo_slug
您应该能够通过将其添加到您的控制器操作来重定向状态 301:
redirect_to "http://host.com/foo/foo_slug", :status => 301
有关详细信息,请参阅 API 文档redirect_to
。
并且将大写 URL 重定向到小写版本应该没有问题,尽管这可能由 HTTP 服务器层的某些东西(例如 Apache mod_rewrite规则)更好地处理。
对于 301 重定向,在您的控制器中写入以下代码:
headers["Status"] = "301 永久移动"
redirect_to " http://host.com/foo/foo_slug " # 在你的情况下
对于第二个问题,如果您提到硬编码网址,请使用大写或小写。
否则,通过将整个 url 放入字符串中来使用 ruby 插值