繁体   English   中英

在rails 3中构建没有子域的url

[英]construct url without subdomain in rails 3

我目前正在检测用户是否具有某个子域,并将用户重定向到没有子域的URL:

subdom = request.subdomains.first
if subdom == "redirectme"
  redirect_to(request.protocol + request.domain + ":" + request.port.to_s)
end

正如您所看到的,我正在手动重建域以不包含子域以将以下内容替换为: http//redirectme.example.com3000到: http//example.com3000

但是,我必须记住,有时候不会有一个端口(因此在域冗余之后冒号),我怀疑还有其他一些我没有考虑的事情。 在没有子域组件的情况下获取完整域的更好方法是什么?

谢谢!

root_url( :subdomain => false )怎么样?

其实我不知道是否有更好的方法。 至于组件,你几乎得到它:协议,域和端口。

如果你想结肠消失,你可以这样做:

redirect_to(request.protocol + request.domain + (request.port.nil? ? '' : ":#{request.port}"))

只是一个执行魔法的零检查!

redirect_to URI.parse(request.uri).tap { |uri| uri.host = request.domain }.to_s

如果端口应该明确地存在于URI中,则需要注意。

例子:

URI.parse("http://www.example.com/").to_s #"http://www.example.com/"
URI.parse("http://www.example.com:80/").to_s #"http://www.example.com/"
URI.parse("https://www.example.com:443/").to_s #"https://www.example.com/"
URI.parse("http://www.example.com:3000/").to_s #"http://www.example.com:3000/"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM