Rails:重定向到当前路径但不同的子域

时间:2012-05-15 04:29:35

标签: ruby-on-rails routing

我认为这应该相当容易,但我不熟悉它是如何完成的......

如何编写一个过滤器,用于检查当前请求是否针对某些子域,如果是,则将其重定向到同一个URL但是在不同的子域上?

即:blog.myapp.com/posts/1很好但blog.myapp.com/products/123重定向到www.myapp.com/products/123

我在想像......

class ApplicationController < ActionController::Base
  before_filter :ensure_domain

  protected
  def ensure_domain
    if request.subdomain == 'blog' && controller_name != 'posts'
      redirect_to # the same url but at the 'www' subdomain...
    end
  end
end

你如何写这个重定向?

4 个答案:

答案 0 :(得分:12)

ActionController::Redirecting#redirect_to允许您传递绝对网址,因此最简单的方法是将其传递给以下内容:

redirect_to request.url.sub('blog', 'www')

答案 1 :(得分:7)

从子域重定向到子域的简单选择如下

redirect_to subdomain: 'www', :controller => 'www', :action => "index"

这将在域名上调用,例如foo.apple.com将转到www.apple.com

答案 2 :(得分:1)

一个更简单的选项,无需执行字符串子操作或指定控制器或操作即可使用

redirect_to url_for(subdomain: 'www', only_path: false)

答案 3 :(得分:1)

一个简单的解决方案是

redirect_to dummy_rul(subdomain: 'subdomain')

示例:

redirect_to projects_url(subdomain: 'edv') it will redirect on below url

"http://edv.maindomain.com/projects"

"edv" 是我的子域