Подтвердить что ты не робот

Как получить значение субдомена из URL-адреса?

как я могу получить значение поддомена в рельсах, есть ли встроенный способ сделать это?

например.

test123.example.com

Я хочу, чтобы test123 был частью URL.

4b9b3361

Ответ 1

У 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

Если вы используете 2.3, вам нужно использовать плагин, например subdomain-fu.

Ответ 2

account_location также является хорошим плагином. После его использования вы можете найти учетную запись на основе разных поддоменов. И вы можете найти субдомен из url, просто написав

request.subdomains(0).first
в своем коде.

Ответ 3

В вашем контроллере используйте следующий метод

request.subdomains

Возвращает массив поддоменов

Ответ 4

Простой в вашем контроллере просто выполните следующие действия

unless request.subdomains.any?
   #No domains available redirect
   redirect_to subdomain: 'www'
end

Ответ 5

Вы можете использовать плагин SubdomainFu. Этот плагин предоставляет вам метод current_subdomain, который возвращает current_subdomain вашего приложения.

Вы также можете посмотреть этот Railscast

UPDATE

Вы также можете использовать request.subdomains, это даст вам массив поддоменов.

Ответ 6

Для тех, кто хочет получить субдомены на локальном хостинге с помощью WEBrick:

Поместите config.action_dispatch.tld_length = 0 в config/environments/development.rb, и все должно работать.

Ссылка на сообщение SO здесь: Могу ли я сделать Rails/WEBrick распознавать записи в /etc/hosts в качестве поддоменов (вместо доменов)?

Ссылка на сообщение Github: https://github.com/rails/rails/issues/12438

Ответ 7

Если вы работаете со строкой и считаете, что это может быть истинный URI, вы можете сделать это, чтобы извлечь поддомен.

require 'uri'

uri = URI.parse('http://test123.example.com')
uri.host.split('.').first
=> "test123"

fooobar.com/questions/319605/...

Ответ 8

Немного поздно для вечеринки, но вот то, что я использовал в более старых версиях рельсов.

subdomain = rquest.subdomains.join('.')

Он должен быть обратно совместим в более новых версиях