CNAME不是重定向,而只是您域的規範名稱。這意味着它的行爲就像它指向的域(myapp.com)。您的瀏覽器獲得與myapp.com相同的IP地址並向其發送請求。
重定向在HTTP級別或更高級別執行。您可以在您的應用中執行此操作,或者爲此創建另一個簡單的應用。
這裏有一個簡單的例子來直接做重定向在您的應用程序:
# in your ApplicationController
before_filter :strip_www
def strip_www
if request.env["HTTP_HOST"] == "www.myapp.com"
redirect_to "http://myapp.com/"
end
end
或者你可以使用導軌金屬,它會做同樣的,但要快得多:
# app/metal/hostname_redirector.rb
class HostnameRedirector
def self.call(env)
if env["HTTP_HOST"] == "www.myapp.com"
[301, {"Location" => "http://myapp.com/"}, ["Found"]]
else
[404, {"Content-Type" => "text/html"}, ["Not Found"]]
end
end
end
你可以也可以使用正則表達式將所有請求與主機名前的www.
進行匹配。
偉大的建議,但千萬不要以爲這種寶石將在一個工作多租戶的情況下,你的應用需要支持client1.com,client2.com等......對嗎? – cman77 2012-09-07 15:10:12