如何从URL获取子域值?

Bla*_*man 21 ruby-on-rails

如何在rails中获取子域值,是否有内置的方法来执行此操作?

例如

test123.example.com
Run Code Online (Sandbox Code Playgroud)

我想要url的test123部分.

Ada*_*sek 25

Rails 3.0内置了此功能,您可以从中访问子域request.subdomain.

您还可以根据子域进行路由:

class SupportSubdomain
  def self.matches?(request)
    request.subdomain == "support"
  end
end

Basecamp::Application.routes do
  constraints(SupportSubdomain) do
    match "/foo/bar", :to => "foo#bar"
  end
end
Run Code Online (Sandbox Code Playgroud)

如果您使用的是2.3,则需要使用subdomain-fu等插件.


Wes*_*ger 7

在控制器中使用以下方法

request.subdomains
Run Code Online (Sandbox Code Playgroud)

返回子域数组

  • `request.subdomain`不返回数组.`request.subdomains`.请注意复数形式的子域. (4认同)

Nim*_*kum 6

account_location也是一个很好的插件.使用后,您可以根据不同的子域找到该帐户.你可以通过写作从url中找到子域名

request.subdomains(0).first
Run Code Online (Sandbox Code Playgroud) 在你的代码中.


Jos*_*hua 6

如果您正在处理一个字符串,并假设它可以是一个真正的 URI,您可以执行此操作来提取子域。

require 'uri'

uri = URI.parse('http://test123.example.com')
uri.host.split('.').first
=> "test123"
Run Code Online (Sandbox Code Playgroud)

/sf/answers/927066731/

  • 对于包含句点的 TLD(例如“mysite.co.uk”),此操作将会失败。 (2认同)