Ruby on rails 在Rails中从mydomain.com重定向到CamelCase版本(mydomain.com)

Ruby on rails 在Rails中从mydomain.com重定向到CamelCase版本(mydomain.com),ruby-on-rails,url-rewriting,Ruby On Rails,Url Rewriting,我想用url重写我的域名,将www.mydomain.com转换为www.mydomain.com(驼峰版) 我在ApplicationController中添加了一个帮助程序: class ApplicationController < ActionController::Base before_filter :redirect_to_camel_case_domain def redirect_to_camel_case_domain if req

我想用url重写我的域名,将www.mydomain.com转换为www.mydomain.com(驼峰版)

我在ApplicationController中添加了一个帮助程序:

class ApplicationController < ActionController::Base

    before_filter :redirect_to_camel_case_domain

     def redirect_to_camel_case_domain

       if request.host == "localhost"       
         redirect_to request.url.gsub(/localhost/, '127.0.0.1')
         return false
       end
     end
  end
class ApplicationController
如果我将localhost重定向到127.0.0.1,它可以正常工作

由于
request.host
中的字符串大小写降低,因此如果我将localhost重定向到localhost,它将进入无限循环
request.env[“HTTP\u HOST”]
也有同样的问题

我正在使用heroku,因此无法使用.htaccess


如何获取请求的真实主机,而不是其小写值?

域名都不区分大小写,通常用小写字母表示。我认为safari会自动“小写”任何包含大写字母的域名。这就是发生在你身上的事情:

  • 将浏览器指向mydomain.com
  • 您的服务器重定向到MyDomain.com
  • 您的浏览器将其转换为mydomain.com
  • 您回到了步骤1

  • URL中唯一区分大小写的是路径组件(第一个/之后的所有内容)

    转到Safari,它将保持大小写不变。虽然使用了Chrome,但它会自动降低大小写。这不是safari 5.1在我的mac上的表现。假设您可以在rails中检索请求域的非小写值,那么heroku应用程序上的许多用户都会遇到问题。在Lion上使用Safari 5.1.1进行了测试。针对前面的麻烦点,谢谢你的警告。