我有一个生产Rails 2.3.5网站,我想将模型的名称更改为在URL中看起来更好的东西。我知道这样做的简单方法是在routes.rb中这样:
map.resources :announcements, :as => :posts
但是,我需要支持旧名称,因为我们正在制作并且不能有死链接。只使用':as'就不会削减它。
我基本上正在寻找一种重定向方式,以便:
http://mysite.com/announcements/23
重定向到
http://mysite.com/posts/23
可能通过Apache做到这一点,但我似乎无法弄清楚重写规则。我想也许routes.rb会是一种更简单的方法。那里没有运气。
谢谢!
答案 0 :(得分:0)
取决于“重定向”的含义 - 听起来最有效的路线可能是将您的帖子控制器添加到公告中,并让公告控制器处理这些页面。所以,在PostsController
:
def index
redirect_to 'announcements#index'
end
等等。只要您愿意,就可以为旧链接提供遗留支持,如果有时间您不再需要它,您可以放弃整个帖子控制器。
答案 1 :(得分:0)
我最终找到了一个非常好的解决方案。
我将:as => :posts
添加到我的routes.rb中,这使得所有链接帮助程序都创建了指向新URL的链接。然后我想出了一个mod_rewrite规则来处理重定向,因此互联网上没有任何断开的链接。这是我添加到Apache配置中的内容:
RewriteEngine On
RewriteRule ^/announcements(.*) /posts$1 [R=301,L]
答案 2 :(得分:0)
如何添加路由两次。使用:as
选项而没有?
//routes.rb
map.resources :announcements
map.resources :announcements, :as => :posts