我有一个很快会切换域名的Rails应用程序。由于我们不想破坏任何旧链接,因此我想使用旧域名为所有请求设置301重定向。除了有一些使用子域的路由之外,关于此的一切都相对简单。
基本上需要发生的是:
'olddomain.com/somepath' (301) ~> 'newdomain.com/somepath'
'subdomain.olddomain.com/somepath' (301) ~> 'subdomain.newdomain.com/somepath'
我在这个问题上看到的大多数建议通常属于两类之一。
在我的情况下,大多数请求都不会有子域名,但是会有一些子域名。
将HTTP_HOST(request.env['HTTP_HOST']
)分离到其子域和域组件非常容易,将传入请求中的域与应用程序的新域进行比较,如果他们没有&#39 ; t匹配,重定向到新的uri(传入请求协议+(可能)子域+新域+请求路径),但由于某种原因,它感觉非常混乱,我想有一个更清洁的方法来完成同样的事情。
这里是(稍微更具可读性)伪代码:
就像我提到的那样,条件使它感到麻烦。
我不介意使用控制器级解决方案,而不是搞乱中间件,因为这不太可能很长时间。任何关于考虑和/或资源的方法的建议都将受到高度赞赏。