আমি nginx ডকুমেন্টেশন তাকান এবং এটি এখনও আমাকে সম্পূর্ণ বিভ্রান্ত করে।
কিভাবে try_files
কাজ করে? এখানে ডকুমেন্টেশন যা বলে:
try_files
সিনট্যাক্স: ট্রাই_ফায়ার্স প্যাথ 1 [পাথ 2] ইউরি
ডিফল্ট: কিছুই নয়
প্রসঙ্গ: সার্ভার, অবস্থান
প্রাপ্যতা: 0.7.27
যথাযথভাবে ফাইলগুলির অস্তিত্বের জন্য পরীক্ষা করে এবং পাওয়া প্রথম ফাইলটি ফেরত দেয়। একটি পিছনে স্ল্যাশ একটি ডিরেক্টরি নির্দেশ করে - $ uri /। কোনও ফাইল খুঁজে পাওয়া যায় না এমন ইভেন্টে, সর্বশেষ প্যারামিটারে অভ্যন্তরীণ পুনর্নির্দেশ করা হবে। গত প্যারামিটার ফলব্যাক কোনো URI এবং আবশ্যক অস্তিত্ব, বা অন্য একটি অভ্যন্তরীণ ত্রুটি উত্থাপিত করা হবে না। পুনর্লিখনের বিপরীতে, ফলব্যাক যদি কোনও নামযুক্ত স্থান না হয় তবে $ আরোগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ করা হয় না। আপনার যদি আরোগুলি সংরক্ষণের প্রয়োজন হয় তবে আপনাকে অবশ্যই এটি স্পষ্টভাবে করতে হবে:
আমি বুঝতে পারি না যে এটি কীভাবে পাথগুলি পরীক্ষা করে এবং আমি যদি কোনও অভ্যন্তরীণ ত্রুটি না চাই তবে কী অন্য ফাইলটি আবিষ্কারের প্রয়াসে বাকি পথটি আবার চালু করতে পারে?
যদি আমি একটি ক্যাশেড ফাইলটি চেষ্টা করতে চাই /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
? আমি চেষ্টা করেছিলাম এবং ব্যর্থ হয়েছি।