重定向状态301在heroku上不起作用

时间:2019-08-17 07:35:45

标签: ruby-on-rails heroku

我有很多这样的重定向:

# config/routes.rb
get 'pages/teachers_tour', to: redirect('/pages/teachers-tour', status: 301)

即尝试使我的网址对Google更加友好。

这在测试和开发模式下有效(尽管我丢失了查询参数)

但是,当我将其实时投入生产时,我看到页面未找到错误。

我确实在生产中使用CDN,但是在没有CDN的登台中也会出现问题。我能够使用CDN(Cloudflare)在生产中临时修复此问题。

如何永久解决此问题?有没有办法更改网址名称,以便查询参数被传输?

2 个答案:

答案 0 :(得分:1)

i.e trying to have my urls more google friendly.

如果仅出于此原因,我建议您使用as而不是重定向。只是要更改显示的子弹。

编辑起来更加清晰:

get 'pages/teachers_tour', as: 'teachers-tour', to: "pages#teachers_tour"

我想这也会解决您的参数问题。

答案 1 :(得分:0)

事实证明,这是由于config/routes.rb文件中的此语句

# must be on last line
match '*unmatched', to: 'application#route_not_found', via: :all if Rails.env.production?

不幸的是,我没有向所有团队传达这是最后一行的重要性,因此重定向被放置在此行之后,因此从未达到。

当时,我知道从软件工程的角度来看这是一件很糟糕的事情,但是对证明自己是正确的却不高兴。