301 Redirect Rails 4 总是去首页

301 Redirect Rails 4 always goes to home page

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

我已经让它在主页上运行,所以 foo.com 将重定向到 www.foo.com,但是,如果我输入 url 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

#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

最终在应用程序控制器中像这样设置它:

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