मैंने nginx प्रलेखन को देखा और यह अभी भी मुझे पूरी तरह से भ्रमित करता है।
कैसे try_filesकाम करता है ? यहाँ दस्तावेज क्या कहते हैं:
try_files
वाक्यविन्यास: try_files path1 [path2] uri
डिफ़ॉल्ट: कोई नहीं
संदर्भ: सर्वर, स्थान
उपलब्धता: 0.7.27
क्रम में फ़ाइलों के अस्तित्व के लिए जाँच करता है, और जो पहली फ़ाइल मिली है उसे लौटाता है। एक अनुगामी स्लैश एक निर्देशिका को इंगित करता है - $ uri /। इस घटना में कि कोई फ़ाइल नहीं मिली है, अंतिम पैरामीटर पर एक आंतरिक पुनर्निर्देशित किया गया है। अंतिम पैरामीटर कमबैक URI है और मौजूद होना चाहिए , अन्यथा एक आंतरिक त्रुटि उठाई जाएगी। पुनर्लेखन के विपरीत, यदि कोई नामांकित स्थान नहीं है तो $ args स्वचालित रूप से संरक्षित नहीं हैं। यदि आपको संरक्षित आर्ग्स की आवश्यकता है, तो आपको ऐसा स्पष्ट रूप से करना चाहिए:
मुझे समझ नहीं आ रहा है कि यह कैसे रास्तों की जाँच करता है और क्या होगा यदि मैं एक आंतरिक त्रुटि नहीं चाहता, लेकिन क्या उसने किसी अन्य फ़ाइल को खोजने के प्रयास में शेष पथ को फिर से शुरू किया है?
अगर मैं एक कैश्ड फ़ाइल को आज़माना चाहता हूं /path/app/cache/url/index.htmlऔर अगर यह कोशिश करने में विफल रहता है /path/app/index.phpतो मैं इसे कैसे लिखूंगा? अगर मैंने लिखा है:
try_files /path/app/cache/ $uri
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
मेरे पास है index index.php index.html index.htm;। जब मैं दौरा /urlnameकरूंगा, /path/app/cache/urlname/index.phpतो /path/app/cache/urlname/index.htmlक्या यह जांचने की कोशिश करेगा ? अगर हम कैश फोल्डर की जांच try_filesकरना संभव है, तो हम सब कुछ अनदेखा कर देते हैं try_files? मैं कोशिश कर रहा हूं और असफल रहा हूं।