在rails应用程序中,主机请求需要在第二级或第三级域请求上进行过滤。
目前,我可以使用前两个语句中的一个过滤,但不能同时使用以下正则表达式
@site ||= if match = request.host.match(/.*?([^.]+\.[^.]+$)/)
@site ||= if match = request.host.match(/.*?([^.]+\.[^.]+\.[^.]+$)/)
domain = match[1]
Site.find_by_host(domain)
如何正确处理第二级或第三级请求?
答案 0 :(得分:1)
好吧,如果你想捕获二级和三级域并拒绝其他所有域,你可以试试这个正则表达式:
/(?i)((?<=\s|^)(?:[a-z0-9\-]+\.){1,2}[a-z0-9]+)(?=(?:[\s\/:])|$)/
的实时演示
输入:
google.com facebook.com
docs.google.com
search.google.com/list
www.microsoft.com
foo.bar.google.com
输出:
google.com facebook.com | match
docs.google.com | match
search.google.com/list | match
www.microsoft.com | match
foo.bar.google.com | no match