【问题标题】:Rails 4 - Parse URLRails 4 - 解析 URL
【发布时间】:2014-05-06 23:03:19
【问题描述】:

我正在我的 Rails 应用程序中解析一个 URL。我想让域example.com 剥离任何协议、子域、目录等。

我的方法:

def clean_host(url)
  uri = URI.parse(url)
  return uri
end

example.com/ 我实际上得到的是:

scheme: 
user:
password:
host:
port:
path: example.com/
query:
opaque:
registry:
fragment:
parser:

我最终想要的是让域 example.com 剥离任何协议、子域、目录等。

我查看了domainatrix,但它不会与我的项目捆绑在一起。有没有办法用 Ruby 的URI.parse 做到这一点?还是我必须寻找其他途径?

【问题讨论】:

    标签: ruby-on-rails ruby url uri


    【解决方案1】:

    问题在于example.com/ 不是完整的 URL。 URI 正确地假定它是一条路径。如果是我,你会有很多这样的碎片,我会蛮力的。

     > "example.com/".sub(%r{^.*?://}, '').sub(%r{/.*$}, '')
     => "example.com"
    
    > "http://subdomain.example.com/path/here".sub(%r{^.*?://}, '').sub(%r{/.*$}, '')
     => "subdomain.example.com"
    

    剥离子域是另一回事,因为您需要举例说明 TLD 以确定什么是合适的,这样您就不会说“com.uk”

    【讨论】:

      【解决方案2】:

      假设您在控制器中执行此操作,您应该能够执行 request.domain。

      你也可以使用 request.path 和 request.subdomain

      例如:http://www.domain.com/users/123

      request.subdomain => 'www'
      request.domain => 'domain.com'
      request.path => '/users/123'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 2011-02-13
        • 2015-06-22
        • 2023-03-11
        • 2021-05-02
        • 2013-09-16
        相关资源
        最近更新 更多