【问题标题】:Redirect from mydomain.com to CamelCase version (MyDomain.com) in Rails在 Rails 中从 mydomain.com 重定向到 CamelCase 版本 (MyDomain.com)
【发布时间】:2011-10-29 17:14:56
【问题描述】:

我想 url 重写我的域,将 www.mydomain.com 转换为 www.MyDomain.com(Camel Case 版本)。

我在我的 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

如果我将 localhost 重定向到 127.0.0.1,它工作正常。

因为request.host 中的字符串是小写的,如果我将localhost 重定向到LocalHost
,它会进入无限循环 request.env["HTTP_HOST"] 也有同样的问题。

我正在使用heroku,所以我不能使用.htaccess

我怎样才能得到请求的真实主机,而不是它的小写值?

【问题讨论】:

    标签: ruby-on-rails url-rewriting


    【解决方案1】:

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

    1. 将浏览器指向 mydomain.com
    2. 您的服务器重定向到 MyDomain.com
    3. 您的浏览器会将其转换为 mydomain.com
    4. 您已返回到第 1 步

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

    【讨论】:

    • 使用 Safari 访问 LocalHost:3000,它将保持 CamelCased。虽然使用 Chrome,但它会自动小写。
    • 这不是 safari 5.1 在我的 Mac 上的行为方式。假设您可以在 rails 中检索请求域的非小写值,您的 heroku 应用程序会遇到很多用户的问题。
    • 在 Lion 上使用 Safari 5.1.1 进行测试。指出前面的麻烦,谢谢你的警告。
    猜你喜欢
    • 2011-03-31
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2015-06-13
    • 2019-12-05
    • 2021-03-20
    相关资源
    最近更新 更多