过滤第 2 级和第 3 级主机请求



在 rails 应用程序中,主机请求需要在二级或第三级域请求上进行过滤。

目前,我可以使用前两个语句之一进行过滤,但不能同时使用以下正则表达式过滤两者

@site ||= if match = request.host.match(/.*?([^.]+.[^.]+$)/)
@site ||= if match = request.host.match(/.*?([^.]+.[^.]+.[^.]+$)/)
  domain = match[1]
  Site.find_by_host(domain)

如何正确处理第二级或第三级请求?

好吧,如果你想捕获二级和三级域并拒绝其他所有内容,你可以试试这个正则表达式:

/(?i)((?<=s|^)(?:[a-z0-9-]+.){1,2}[a-z0-9]+)(?=(?:[s/:])|$)/

在 rubular.com 观看现场演示

输入:

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

相关内容

  • 没有找到相关文章

最新更新