重定向到另一个域,除非URL包含标识符

时间:2015-12-24 22:24:11

标签: ruby-on-rails ruby-on-rails-4 redirect heroku

很抱歉,如果问题标题有点偏离,就无法想到更具描述性的内容。

所以我有2个域:aaa.combbb.com

我希望我的第二个域bbb.com始终重定向到aaa.com,除非它有一定的路径:bbb.com/ct/:id

这两个域现在都使用相同的Heroku App。

因此,在我的Application Controller中,或者路由I,必须扫描请求URL,如果它包含/ct/:id,则让它继续执行控制器操作,如果不重定向到aaa.com。 / p>

或者我可以以某种方式将DNS设置为仅在ct/:id不在网址中时重定向?

基本上我希望实现用户无法从bbb.com导航应用,除非特定网址bbb.com/ct/:id存在。

我使用GoDaddy作为Registar并为我的Heroku应用程序设置了2个Cnames。

如何实现此行为?

2 个答案:

答案 0 :(得分:2)

我更喜欢在实际控制器中进行重定向,而不是在路径文件中,因此您可以为其编写控制器规范。

PYTHONPATH

答案 1 :(得分:0)

您可以创建机架中间件来执行重定向。其中一个例子是https://github.com/gbuesing/rack-host-redirect/blob/master/lib/rack/host_redirect.rb

OR

在routes.rb中使用约束。 注意:我还没有测试过。

get "*path" => redirect("http://aaa.com"), constraint: lambda { |request| !request.url.match(/ct\/\d/) }