CNAME - это не перенаправление, а только каноническое имя для вашего домена. Это означает, что он ведет себя так же, как домен, на который он указывает (myapp.com в вашем случае). Ваш браузер получает тот же IP-адрес, что и у myapp.com, и посылает на него запрос.
Перенаправления выполняются на уровне 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
Или вы можете использовать rails metal, который сделает то же самое, но гораздо быстрее:
# 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
Вы также можете использовать Regex для соответствия всем запросам с www.
перед именем хоста.