2012-10-18 90 views
3

要帶有特定擴展名的文件相匹配,我們可以利用這一點:如何匹配nginx中擴展少的文件的位置?

位置〜*(PHP | JSP | CGI | PL | PY)$ {}

和預期的所有作品...。?

但是,如果我們有沒有任何擴展名的文件,我怎麼能匹配他們在'位置'塊?!

回答

4

.*.(php|jsp|cgi|pl|py)?$匹配任何數目的後跟另一個字符(.)和零或所列擴展(...)?之一occurence字符(.*)的正則表達式。由於?,此正則表達式應該已經匹配沒有擴展名的文件,因爲您可以驗證here。澄清評論

更新您可以使用正則表達式[^.]+(?!(php|jsp|cgi|pl|py))$這意味着匹配多個字符不得爲週期,不跟上市推廣。

月2日更新

按照docu of location

沒有語法不匹配正則表達式。相反, 匹配目標正則表達式,並分配一個空塊

所以,你想每一個具有擴展名的文件相匹配,並指定空塊。它類似於你原來的正則表達式,但沒有?,你最好在擴展之前逃離點,否則它意味着任何字符。

location ~ .*\..+$ {} 
+0

你好,也許我還不夠清楚。 我想要的是匹配現在只'擴展少文件! –

+0

@MarkWurkz我編輯了答案。 – halex

+0

如果我想要一些與衆不同的東西...忘了這個例子,我提供了'擴展',我想忽略'任何文件'有擴展名,只接受擴展名較少的文件,我怎麼能做到這一點? –