Перенаправление на другой домен, за исключением случаев, когда URL-адрес содержит идентификатор

Извините, если заголовок вопроса немного не тот, я не мог придумать что-то более описательное.

Итак, у меня есть 2 домена: aaa.com и bbb.com.

Я хочу, чтобы мой второй домен bbb.com всегда перенаправлял на aaa.com, ЗА ИСКЛЮЧЕНИЕМ ЕСЛИ у него есть определенный путь: bbb.com/ct/:id

Оба домена прямо сейчас используют одно и то же приложение Heroku.

Итак, я думаю, что в моем Application Controller или Routes я должен сканировать URL-адрес запроса, и если он содержит /ct/:id, пусть он продолжит действие контроллера, если не перенаправить на aaa.com.

Или я могу как-то настроить DNS для перенаправления только в том случае, если ct/:id отсутствует в URL-адресе?

В основном я хочу добиться того, чтобы пользователь не мог перемещаться по приложению из bbb.com, за исключением случаев, когда присутствует конкретный URL-адрес bbb.com/ct/:id.

Я использую GoDaddy в качестве регистратора, и у меня есть 2 Cname, настроенных для моих приложений Heroku.

Как мне добиться такого поведения?


person Mini John    schedule 24.12.2015    source источник


Ответы (2)


Я предпочитаю выполнять ваши перенаправления в реальном контроллере, а не в файле маршрута, чтобы вы могли написать для него спецификацию контроллера.

# app/controllers/application_controller.rb

before_action :redirect_bbb_to_aaa

def redirect_bbb_to_aaa
  if request.host == "http://bbb.com"
    redirect_to some_aaa_path unless request.url == "http://bbb.com/ct/:id"
  end
end
person MilesStanfield    schedule 25.12.2015

Вы можете создать промежуточное программное обеспечение стойки для перенаправления. Один из таких примеров находится здесь https://github.com/gbuesing/rack-host-redirect/blob/master/lib/rack/host_redirect.rb

OR

Используйте ограничение в route.rb. Примечание: я не проверял это.

get "*path" => redirect("http://aaa.com"), constraint: lambda { |request| !request.url.match(/ct\/\d/) }
person archana    schedule 24.12.2015
comment
Некоторое объяснение было бы действительно полезно. Я никогда не копался в промежуточном программном обеспечении. - person Mini John; 25.12.2015
comment
Посмотрите на код в геме (ссылка указана выше). github.com/gbuesing/rack-host- перенаправление/blob/master/lib/rack/ - person archana; 25.12.2015
comment
Та самая ссылка. Как я уже сказал, я еще не там, чтобы понять это :( - person Mini John; 25.12.2015