2016-08-25 53 views
0

我想檢查一個字符串是否匹配域的列表;但是,我得到以下錯誤:nginx的if語句串支票域

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)) { 
    ... 
} 
+0

這是幹什麼用的? –

回答

1

嘗試使用這個作爲你的模式,而不是:.*\.duckduckgo\.com|.*\.googlebot\.com|.*\.crawl\.yahoo\.net|.*\.search\.msn\.com|.*\.crawl\.baidu.com

使用正則表達式,*任何數量(包括沒有)匹配前面的ELE在這種情況下,這是.。 A .將匹配任何單個字符,這就是爲什麼您要使用反斜槓在URL中跳過這些句點,以便它們被解釋爲文字.而不是匹配任何字符。