我正在我的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从任何协议、子域、目录等中删除。
我研究过领域线,但它不会与我的项目捆绑在一起。有什么方法可以用Ruby的URI.parse来实现吗?还是我要研究其他的途径?
发布于 2014-05-06 23:31:24
问题是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“了。
发布于 2014-05-06 23:55:05
假设您在控制器中执行此操作,您就应该能够执行request.domain。
您还可以使用request.path和request.subdomain。
例如:http://www.domain.com/users/123
request.subdomain => 'www'
request.domain => 'domain.com'
request.path => '/users/123'https://stackoverflow.com/questions/23505968
复制相似问题