আমি মনে করি যে এনজিনেক্স প্রিফিক্সগুলিতে কাজ করছে এবং প্রতি সেফের জন্য ফাইলগুলি নয় exp প্রথম ক্ষেত্রে,
location /robots.txt { alias /home/www/static/robots.txt; }
এনগিনেক্স ইউআরএল পাথের স্ট্রিং উপসর্গটি প্রতিস্থাপন করে এবং তারপরে ফলাফলটি ফাইল-সিস্টেমের পথ হিসাবে ব্যবহার করে। সিউডোকোড হিসাবে উপস্থাপন করা, এটি এমন কিছু হবে:/robots.txt/home/www/static/robots.txt
if urlPath.startsWith("/robots.txt") {
fsPath := "/home/www/static/robots.txt" + urlPath.stripPrefix("/robots.txt")
serveFile(fsPath)
}
তাই /robots.txtথেকে পরিবেশিত হয় /home/www/static/robots.txtকারণ /robots.txtছিনতাই /robots.txtউপসর্গ খালি স্ট্রিং, এবং খালি স্ট্রিং সংযোজন /home/www/static/robots.txtআপাতত অপরিবর্তিত ছেড়ে। তবে, /robots.txt1থেকে পরিবেশন করা হবে /home/www/static/robots.txt1এবং /robots.txt/foobarপরিবেশন করা হবে /home/www/static/robots.txt/foobar। এই ফাইলগুলি অস্তিত্বহীন হতে পারে, যার ফলে এনজিনেক্স একটি 404 প্রতিক্রিয়া প্রেরণ করবে এবং এটি সম্ভবত robots.txtকোনও ডিরেক্টরি নয় তবে এনজিনেক্স আগে থেকেই জানেন না এবং এটি সমস্ত স্ট্রিং উপসর্গের উপর ভিত্তি করে এবং কোনও ফাইল হিসাবে উপস্থিত বলে মনে হয় না বা অনুপস্থিতি বা একটি পিছনে স্ল্যাশের উপস্থিতি দ্বারা ডিরেক্টরি।
অন্যদিকে,
location /robots.txt { root /home/www/static/; }
এনগিনেক্স /home/www/static/ইউআরএল পাথের শুরুতে স্ট্রিংটি সন্নিবেশ করে এবং তারপরে ফলাফলটি ফাইল সিস্টেমের পথ হিসাবে ব্যবহার করে। সিউডোকোডে, এটি এমন কিছু হবে:
if urlPath.startsWith("/robots.txt") {
fsPath := "/home/www/static/" + urlPath
serveFile(fsPath)
}
এটি প্রথম কেসের মতো একই ফলাফল, তবে ভিন্ন কারণে। কোনও উপসর্গ ফেলা হয় না, তবে যেহেতু প্রতিটি ইউআরআই /robots.txtপাথগুলিতে উপসর্গ থাকতে হয় , তারপরে ফাইল সিস্টেমের পথগুলি সর্বদা শুরু হবে /home/www/static//robots.txtযার সমতুল্য /home/www/static/robots.txt ।
অবশ্যই, সিউডোকোড পুরো গল্পটি পুরোপুরি বলে না, যেমন এনজিনেক্স অন্ধভাবে কাঁচা ইউআরএল পাথ ব্যবহার করবে না /../../../etc/passwd, try_filesনির্দেশিকাটি root/ এর আচরণকে পরিবর্তন করে aliasএবং যেখানে aliasব্যবহার করা যেতে পারে তার ক্ষেত্রেও বাধা রয়েছে ।
=উভয় ক্ষেত্রে একটি ব্যবহার করতে পারেন , সঠিক? বা এটি কেবল প্রযোজ্যroot? এছাড়াও, আমার সম্পাদনা দেখুন - আমি উভয় একবারে ব্যবহার করতে চাইছিলাম না। :)