2012-05-15 75 views
14

我想這應該是相當容易的,但我不熟悉它是如何做...的Rails:重定向到當前路徑,但不同的子域

你怎麼濾波器之前寫一個,將檢查當前請求是爲某些子域名,如果是這樣重定向到相同的網址,但在不同的子域?

即: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 

你怎麼寫重定向?

回答

12

ActionController::Redirecting#redirect_to允許你傳遞一個絕對的URL,這樣做將是最簡單的事情將它傳遞一個喜歡的東西:

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

啊,我不知道存在的'.sub'方法!謝謝! – Andrew

+6

Doh!子方法只是簡單的老紅寶石子方法...好吧,所以經過進一步的實驗,這可以工作,但我必須使用更多的正則表達式來照顧它。 'request.url'對象讓我足夠了解其餘的,謝謝! – Andrew

+0

只希望你永遠不會在你的網站的其他地方有www ... – Qwertie

2

一個簡單的選擇,從子域重定向到子域將是以下 redirect_to subdomain: 'www', :controller => 'www', :action => "index"

這被稱爲一個域名,例如foo.apple.com然後會去www.apple.com

相關問題