Ubuntu

squid url_regex 不匹配字元

  • April 5, 2022

我有一個 url_regex acl:^http(s)://bitbucket.org/example/*

但是,它與網址匹配:http(s)://bitbucket.org/example_test/*

這似乎沒有考慮 ^http(s)://bitbucket.org/example/* 末尾的“/”

我想將任何內容與子文件夾匹配範例進行匹配。例如:bitbucket.org/example/case_1 bitbucket.org/example/case_2 但不是,bitbucket.org/example_bad/case_3

它似乎是正則表達式的特殊混合,它沒有考慮“/”——

誰能看到這裡有什麼問題?

正如steeldriver 所說,它出於相同的原因car*t匹配cat  -  *表示前面的任意數量的字元,包括零  r*匹配 and 之間的零, r並且您 匹配 and 之間的零斜線。a``t``/*``example``_test/*

你想匹配http(s)://bitbucket.org/example (沒有任何子目錄)嗎?如果沒有,那很容易;只需使用

^http(s)://bitbucket.org/example/

或者

^http(s)://bitbucket.org/example/.*$

如果你確實想匹配http(s)://bitbucket.org/example,那就有點棘手了。您需要example位於 URL 的末尾,或者後跟一個斜杠。一些正則表達式引擎會讓你說

^http(s)://bitbucket.org/example(/|$)

|裡面(……的)意思是“或”。例如,grep -E支持這個。我不知道這是否適用於 Squid。


Squid 是否允許您指定多個正則表達式?如果是,請指定

^http(s)://bitbucket.org/example$

^http(s)://bitbucket.org/example/

引用自:https://unix.stackexchange.com/questions/698000