在 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