सवाल Nginx स्थान regex मिलान नहीं कर रहा है


निम्नलिखित मेरे लिए सीएसएस और जेएस कैश करने के लिए काम कर रहा है:

location ~ "^(.*)\.(min.)?(css|js)$" {
    expires max;
}

परिणाम:

$ curl -I http://mysite.com/test.css
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Jan 2014 18:55:28 GMT
Content-Type: text/css
Content-Length: 19578
Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT
Connection: keep-alive
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
X-Backend: stage01
Accept-Ranges: bytes

मैं अपने जेएस / सीएसएस के लिए 10 अंकों के यूनिक्स टाइमस्टैम्प का उपयोग करके वर्जनिंग सेटअप प्राप्त करने की कोशिश कर रहा हूं और मुझे निम्नलिखित रेगेक्स के साथ रेगेक्स मैच प्राप्त करने में समस्याएं आ रही हैं।

location ~ "^(.*)([\d]{10})\.(min\.)?(css|js)$" {
    expires max;
}

परिणाम:

$ curl -I http://mysite.com/test_1234567890.css
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 16 Jan 2014 19:05:03 GMT
Content-Type: text/css
Content-Length: 19578
Last-Modified: Mon, 13 Jan 2014 18:54:53 GMT
Connection: keep-alive
X-Backend: stage01
Accept-Ranges: bytes

5
2018-01-16 19:05


मूल


डीबग मोड में nginx चलाने की कोशिश करें, आप निश्चित रूप से reg_exp मैच देखेंगे या नहीं, आपको हमें पूर्ण nginx.conf प्रदान करने की भी आवश्यकता है, क्योंकि कुछ अन्य नियम पहले ट्रिगर किए जा सकते हैं। - Sergey


जवाब:


मैं इसे \ d के आस-पास के ब्रैकेट के बिना आज़माउंगा, ब्रैकेट आमतौर पर या तो संगत वर्णों या संख्याओं के लिए उपयोग किए जाते हैं, आपके ब्रैकेट्स का कहना है कि चरित्र या तो 'अक्षर' या 'डी'

"^(.*)(\d{10})\.(min\.)?(css|js)$"

साथ ही, क्या आप विशेष रूप से उस समूह की जानकारी को सहेज रहे हैं जिसे आप माता-पिता के अंदर कैप्चर कर रहे हैं?

नीचे दी गई टिप्पणियों पर स्पष्टता के लिए।

सरल शुरू करो।

"^.*[0-9]*\.css$"

"^.*[:digit:]*\.css$"

"^.*\d*\.css$"

कौन से कामों के आधार पर, अंकों के लिए उस आधार का उपयोग करें और नीचे के रूप में विस्तार करें।

"^.*\d{10}\.(min\.)?(css|js)$"

यदि आप http / https से भी मेल खाते हैं, तो आप इसे नीचे http / s सामान से शुरू कर सकते हैं, याद रखें कि कभी भी डिजिटली नोटेशन काम करता है।

"^http(s)?://.*[0-9]{10}\.(min\.)?(css|js)$"

2
2018-01-16 19:12



अभी भी स्क्वायर ब्रैकेट के बिना काम नहीं कर रहा है, मैं वर्तमान में उस जानकारी का उपयोग नहीं कर रहा हूं जिसे मैं कैप्चर कर रहा हूं - Chris Montanaro
क्या आप http स्ट्रिंग पर मेल खाते हैं? और क्या आप सिर्फ एक स्ट्रिंग की तलाश कर रहे हैं जिसमें दस अंक और सीएसएस / जेएस समाप्त हो रहे हैं? - rfelsburg
हां, यह एक स्थान ब्लॉक है जो सर्वर घोषणा में शामिल है। मैं .css, .js, .min.css या .min.js में समाप्त होने वाले नाम में 10 अंकों की संख्या ढूंढ रहा हूं। - Chris Montanaro
यदि 10 अंक हमेशा समाप्त होने से पहले होंगे, यानि 1234567890.css तो इनमें से एक को "^ http (ओं)? // //* \ d {10} \। (Css | js) $" "^ http" (एस)?: //.* [0-9] {10} \। (सीएसएस | जेएस) $ "" ^ http (एस)?: //.* [: अंक:] {10} \। (सीएसएस | जेएस) $ "" ^ http (एस)? // //* \ d + \। (सीएसएस | जेएस) $ "मेल खाना चाहिए। यदि आपको जो काम पता है उससे निर्माण करने में समस्याएं आ रही हैं। उदाहरण के लिए, उपरोक्त यूआरएल के साथ 'mysite.com/test_1234567890.css'करता है'। * \ D * \। सीएसएस 'काम? - rfelsburg
@rfelsburg, मुझे यकीन नहीं है कि आप इसका दावा क्यों करते हैं [:digit:]* ब्याज की किसी भी चीज़ से मेल खा रहा है, दस्तावेज़ कहते हैं कि यह और अधिक होना चाहिए [[:digit:]]*, अगर कुछ भी। mdoc.su/o/re_format.7 - cnst