如何根据域名更改视图格式

Posted

技术标签:

【中文标题】如何根据域名更改视图格式【英文标题】:Howto change view format based on domain name 【发布时间】:2011-01-21 12:28:58 【问题描述】:

我想知道是否有任何方法可以根据域名更改同一个rails应用程序的视图格式。

例如:

www.domain.com => respond_to format.html api.domain.com => respond_to format.xml 或 format.json

感谢大家的帮助

【问题讨论】:

你当然可以调整 apache 配置来做到这一点。 【参考方案1】:

是的,在控制器中使用 before_filter 并根据request.host 的值设置response.format

class Controller < ActionController::Base

  before_filter :adapt_response_format

  protected

    def adapt_response_format
      response.format = case request.host
        when "xml.foo.com" then :xml
        else                    :html
    end

end

【讨论】:

太棒了!非常感谢!【参考方案2】:

这是我猜测是您的问题的另一种方法。

为什么不要求您的客户根据他们想要的格式将 Accept 标头设置为 application/xml 或 application/json?您可以默认提供 html 以支持网络浏览器。

这样你就不需要有两个不同的主机了。

【讨论】:

内容协商?!你疯了吗,达雷尔!?我开玩笑,我开玩笑。 ;) @Mike 我知道,按照预期使用 HTTP 功能似乎很疯狂。 使用不同主机的优缺点是什么?我看到很多网站在 api 子域上实现了他们的 api:api.domain.com。一些事件将其静态内容放在 static.domain.com 上。

以上是关于如何根据域名更改视图格式的主要内容,如果未能解决你的问题,请参考以下文章

如何解决WordPress更改新域名后使得网站正常运行

如何解决WordPress更改新域名后使得网站正常运行

如何解决WordPress更改新域名后使得网站正常运行

如何解决WordPress更改新域名后使得网站正常运行

如何在flutter中更改公司域名?

DNS域名解析服务