nginx if语句字符串检查域

时间:2016-08-25 03:46:17

标签: regex if-statement networking nginx bots

我尝试检查字符串是否与域列表匹配;但是,我收到以下错误:

nginx: [emerg] pcre_compile() failed: nothing to repeat in "("*\.duckduckgo\.com|*\.googlebot\.com|*\.crawl\.yahoo\.net|*\.search\.msn\.com|*\.crawl\.baidu.com")" at "*\.googlebot\.com|*\.crawl\.yahoo\.net|*\.search\.msn\.com|*\.crawl\.baidu.com")"

我使用以下声明:

if ($rdns_hostname ~* (*\.duckduckgo\.com|*\.googlebot\.com|*\.crawl\.yahoo\.net|*\.search\.msn\.com|*\.crawl\.baidu.com)) {
    ...
}

1 个答案:

答案 0 :(得分:1)

请尝试将此作为您的模式:.*\.duckduckgo\.com|.*\.googlebot\.com|.*\.crawl\.yahoo\.net|.*\.search\.msn\.com|.*\.crawl\.baidu.com

使用正则表达式,*匹配前面元素的任何数字(包括无),在本例中为..将匹配任何单个字符,这就是您使用反斜杠转义URL中句点的原因,以便将它们解释为文字.而不是匹配任何字符。< / p>