คำถามนี้ตามมาในหลายวิธีจากก ก่อนหน้านี้ ฉันเคยถาม - และจบลงด้วยการตอบตัวเอง บทสรุปโดยย่อของปัญหาที่ฉันอธิบายที่นั่นและวิธีแก้ปัญหาของฉัน
- ฉันต้องดำเนินการตามค่าเริ่มต้นต่างๆ เมื่อมีการพยายามเข้าถึงไฟล์ในโฟลเดอร์ย่อย ขึ้นอยู่กับว่าใครพยายามเข้าถึง
อ่า
- เว็บแอป "back-office" ซึ่งในกรณีนี้ไฟล์จะถูกส่งหากมีอยู่หรือมีการสร้าง "stub" และสะท้อนกลับหากไม่มี
- ในการตอบสนองต่อคำขอจากแอปโทรศัพท์ OTH ฉันต้องการส่งไฟล์ หากมีอยู่ หรือส่ง HTTP 404 หากไม่มี
วิธีแก้ปัญหาที่ฉันทำมีดังนี้
- สร้าง symlink ไปยังโฟลเดอร์ที่ต้องการ
ln -s /path/to/folder /path/to/bo_folder
ที่คำนำหน้า โบ_
บน symlink ย่อมาจาก back-office
- เมื่อดึงไฟล์จากแอป ให้พยายามเข้าถึงไฟล์โดยตรงเป็น
/path/to/folder/file.name.extn
ซึ่งในกรณีนี้ Nginx จะจัดการกับการส่ง 404 หรือไฟล์กลับตามที่เห็นสมควร
- เมื่อดึงไฟล์เพื่อแก้ไขในชุด backoffice ให้เข้าถึงไฟล์เหล่านั้นเป็น
/path/to/bo_folder/file.name.extn
บล็อกการกำหนดค่า Nginx ต่อไปนี้
ตำแหน่ง /path/to/bo_folder
{
add_header Access-Control-Allow-Origin *;
เขียนใหม่ ^(.*)$ /path/to/folder/index.php?$1 สุดท้าย;
}
ปัญหาที่ฉันกำลังพยายามค้นหาวิธีแก้ปัญหาที่สง่างามกว่านี้คือปัญหานี้ - ฉันไม่ได้มีเพียงโฟลเดอร์ดังกล่าวเพียงโฟลเดอร์เดียว แต่มีลำดับทั้งหมด /path/to/folder_1, /path/to/folder_2... /path/to/folder_n
พอใส่ได้ค่ะ ที่ตั้ง
การบล็อกสำหรับแต่ละโฟลเดอร์นั้นเป็นไปได้ มันน่าเบื่อและเกิดข้อผิดพลาดได้ง่าย เกือบจะมีวิธีในการเขียนซ้ำโดยทั่วๆ ไปในระดับหนึ่งโฟลเดอร์ขึ้นไป เช่น ใน /เส้นทาง/ถึง
มากกว่าสำหรับแต่ละโฟลเดอร์ย่อย
มีความซับซ้อนเล็กน้อยที่นี่ - ฉันไม่สามารถจัดการสิ่งนี้ได้โดยเขียนใหม่เป็น /path/to/index.php
โฟลเดอร์เนื่องจากเนื้อหาต้นขั้วที่ฉันต้องส่งกลับนั้นค่อนข้างแตกต่างกันขึ้นอยู่กับโฟลเดอร์ย่อยที่ควรจะเป็นเนื้อหานั้น
ความรู้ที่ค่อนข้างคลุมเครือของฉันเกี่ยวกับการกำหนดค่า Nginx ทำให้ฉันผิดหวังที่นี่ วิธีนี้สามารถทำได้?