ฉันมีปัญหากับการตั้งค่า NGINX ด้วยการเปลี่ยนเส้นทางไปยังหน้าแสดงข้อผิดพลาดที่กำหนดเองในตำแหน่งอื่น (รวมถึง css, รูปภาพ, js) หากหน้าแสดงข้อผิดพลาดถูกโยนทิ้ง
ตอนแรกฉันต้องการบล็อกการเข้าถึงโฟลเดอร์ (เช่น .git
). สามารถทำได้ง่ายผ่าน (ภายในบล็อกเซิร์ฟเวอร์)
ตำแหน่ง ~ /(.git) {
ปฏิเสธทั้งหมด
กลับ 404;
}
จากนั้นฉันสร้างองค์ประกอบ error_page ที่กำหนดเอง (ภายในบล็อกเซิร์ฟเวอร์) ด้วยไฟล์ 404.html ที่กำหนดเองในตำแหน่งอื่นที่ไม่ใช่ไดเรกทอรีรากของเว็บไซต์
error_page 404 /404.html;
สถานที่ = /404.html {
รูท /var/data/websites/error-page;
ภายใน;
}
หลังจากการเปลี่ยนแปลงเหล่านี้ หน้า 404 ที่กำหนดเองของฉันจะแสดงขึ้น แต่ไม่มี css, js และรูปภาพ
ถ้าฉันตรวจสอบเว็บไซต์ เหตุผลก็ง่าย: เส้นทางของไฟล์ไม่ถูกต้อง - พวกเขาอิงตามตำแหน่ง (ในตัวอย่างของฉัน .git
).
https://it.dmetzler1988.io/.git/css/main.css net::ERR_ABORTED 404
.
นี่คือไฟล์กำหนดค่า NGINX ที่สมบูรณ์สำหรับหน้านี้ (ลบเฉพาะเส้นทางใบรับรอง ssl เท่านั้น):
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ฟัง [::]:443 ssl http2;
ssl_certificate <เส้นทาง>;
ssl_certificate_key <เส้นทาง>;
server_name it.dmetzler1988.io;
รูท /var/data/websites/dmetzler1988.io/it.dmetzler1988.io;
ดัชนี index.html index.php;
error_page 404 /404.html;
สถานที่ = /404.html {
รูท /var/data/websites/error-page;
ภายใน;
}
ตำแหน่ง ~ /(.git) {
ปฏิเสธทั้งหมด
กลับ 404;
}
}
ดังนั้นคำถามของฉันเกี่ยวกับสถานที่นี้:
- ฉันจะแก้ไขปัญหาด้วยเส้นทางที่ไม่ถูกต้องได้อย่างไร (ลบไฟล์
.git
จากเส้นทาง)?
- นี่เป็นวิธีที่ถูกต้องสำหรับกรณีการใช้งานดังกล่าวหรือมีวิธีแก้ไขที่ดีกว่านี้หรือไม่