301 Redirect Rails 4总是转到主页

时间:2015-06-20 21:15:03

标签: ruby-on-rails ruby ruby-on-rails-4 redirect controller

在我的Rails 4应用程序中,在应用程序控制器内部实现重定向。

我已经让它在主页上工作,因此foo.com会重定向到www.foo.com,但是,如果我输入网址foo.com/about,它只会重定向回主页www.foo.com

这是我正在使用的代码(application_controller.rb):

before_filter :add_www_subdomain

def add_www_subdomain
  unless /^www/.match(request.host)
  redirect_to("#{request.protocol}www.#{request.host_with_port}",
              :status => 301)
  end
end

无法专门为rails找到文档4.最好的方法是什么?我希望foo.com/about重定向到www.foo.com/about

2 个答案:

答案 0 :(得分:1)

#host_with_port替换为#fullpath,您将被设置。

before_filter :add_www_subdomain

def add_www_subdomain
  unless /^www/.match(request.host)
    redirect_to("#{request.protocol}www.#{request.fullpath}", status: 301)
  end
end

答案 1 :(得分:0)

在应用程序控制器中完成设置:

private

def add_www_subdomain
  unless request.host == 'www.foo.com'
    redirect_to 'https://www.foo' + request.fullpath
  end
end

并调用之前的过滤器:

before_filter :add_www_subdomain