为什么要在路由文件中重定向?

问题描述 投票:0回答:1

阅读 Ruby on Rails 指南,我看到这个示例:

get '/stories/:name', to: redirect('/articles/%{name}')

我很困惑,这什么时候会有帮助?你不能像这样指向控制器/动作的路径吗?

get '/stories/:name', to: 'articles#show'
ruby-on-rails routes
1个回答
0
投票

他们做的事情非常不同。

get '/stories/:name', to: redirect('/articles/%{name}')

将导致路由器直接响应:

HTTP/1.1 301 Moved Permanently
Location: http://localhost:3000/articles/a_tall_tale

如果您想将旧路由的请求重定向到新路由并告诉客户端使用新 URL,但您无法(或太懒)在 HTTP 服务器层上设置重定向,这非常有用(其开销甚至更少)。

get '/stories/:name', to: 'articles#show'

将请求分派到相关控制器并返回它生成的任何响应。

如果目标是支持旧版 URL,这实际上不会告诉客户端使用新 URL,除非您从控制器重定向,这样做的效率会比从路由器执行的效率低。

© www.soinside.com 2019 - 2024. All rights reserved.