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