Score:0

nginx - ความพยายามที่จะเปลี่ยนเส้นทางเส้นทางด้วยตัวแปรภายในล้มเหลว

ธง cm

ฉันต้องการเปลี่ยนเส้นทางคำขอไปยังไฟล์จาก

/path/to/file/content?path=file.pdf

ถึง

/new/path/to/file/file.pdf

ภายใต้โดเมนเดียวกัน

ฉันลองเขียนกฎง่ายๆ หรือแบบนี้

ตำแหน่ง ~ ^/path/to/file/content?path=(.*) {
   ส่งคืน 301 /new/path/to/file/$1;
}

น่าเสียดายที่ nginx ไม่เข้าใจตัวแปร ผมทำอะไรผิดหรือเปล่า? ใครมีคำแนะนำให้ฉันบ้าง น่าเสียดายที่ฉันไม่รู้เกี่ยวกับ reqex มากนัก ขอบคุณมาก!

Score:0
ธง gr

ซึ่งแตกต่างจากกฎการเขียนใหม่ของ apache ทั้งคู่ ที่ตั้ง และ เขียนใหม่ คำสั่ง nginx ทำงานร่วมกับสิ่งที่เรียกว่า ทำให้เป็นมาตรฐาน URI (ดูที่ ที่ตั้ง คำสั่ง เอกสาร เพื่อค้นหาว่าหมายความว่าอย่างไร) ซึ่งไม่รวมส่วนของแบบสอบถาม ตรวจสอบว่า เส้นทาง อาร์กิวเมนต์คิวรีต้องไม่ว่างเปล่าและเปลี่ยนเส้นทางหากคำขอ URI ตรงกับรูปแบบของคุณโดยใช้ส่วนกำหนดค่าต่อไปนี้:

ถ้า ($arg_path) {
    เขียนใหม่ ^/path/to/file/content /new/path/to/file/$arg_path? ถาวร;
}
Christian avatar
cm flag
สวัสดีอีวาน ขอบคุณมากสำหรับคำตอบของคุณ ฉันคัดลอกส่วนลงในบล็อก ที่ตั้ง / { } แต่แล้ว nginx ก็เพิกเฉยต่อกฎนี้ แต่ถ้าฉันลบส่วน if เช่น เขียนเท่านั้น rewrite.... การเปลี่ยนเส้นทางเกือบจะใช้งานได้ เบราว์เซอร์ระบุเพียง /new/path/to/file/ แต่ชื่อไฟล์หายไป
Ivan Shatsky avatar
gr flag
ขออภัย แน่นอนว่าฉันพิมพ์ผิด ควรเป็น `$arg_path` แทน `$arg_file`
Christian avatar
cm flag
ทุกอย่างเรียบร้อยดี คุณช่วยฉันได้มาก ขอบคุณมาก. ตอนนี้คำสั่ง if ใช้งานได้ ขออภัย ที่อยู่ในเบราว์เซอร์ยังคงสิ้นสุดที่ /new/path/to/file/ ไม่มีชื่อไฟล์
Ivan Shatsky avatar
gr flag
เบราว์เซอร์ของผู้ใช้ปลายทางมักจะแคชการเปลี่ยนเส้นทาง HTTP 301 แบบถาวร ดังนั้นจึงสามารถแคช URI จากการกำหนดค่าก่อนหน้าได้ ล้างแคชของเบราว์เซอร์หรือลองจากหน้าต่างที่ไม่ระบุตัวตน
Christian avatar
cm flag
ขอโทษ คุณพูดถูก ฉันงี่เง่ามาก คุณทำให้วันของฉัน ขอบคุณมาก!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา