Score:0

ต่อท้ายพารามิเตอร์ URL เพื่อขอ URI โดยใช้ Nginx

ธง ng

ฉันกำลังพยายามผนวกพารามิเตอร์ URL กับ URI คำขอเฉพาะภายในบล็อกเซิร์ฟเวอร์

นี่คือสิ่งที่ฉันมีจนถึงตอนนี้:

ถ้า ( $request_uri = "/ทดสอบ/สมัคร" ) {
    เขียนใหม่ ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 สุดท้าย;
}

ตำแหน่ง /การทดสอบ/ {
    try_files $uri $uri/ /testing/index.php;
}

อย่างไรก็ตาม วิธีนี้ใช้ได้เฉพาะเมื่อ URI คำขอเดิมไม่มีพารามิเตอร์ URL ของตัวเอง (เช่น www.example.com/testing/signup?abc=hello) ฉันต้องการเก็บ URL เดิมไว้และเพิ่มพารามิเตอร์ของตัวเอง

ฉันได้ลองเปลี่ยน regex เป็น if ( $request_uri ~* "^/ทดสอบ/สมัคร" ) { แต่สิ่งนี้ทำให้เกิดลูป

ใครสามารถช่วย?

**** อัปเดต ****

ฉันได้อัปเดตเพื่อลองทำสิ่งนี้:

ตำแหน่ง /การทดสอบ/ {
    เขียนใหม่ ^/testing/signup$ /testing/signup?org=1231564 break;
    try_files $uri $uri/ /testing/index.php$is_args$args;
}

สิ่งนี้ไม่ผ่านพารามิเตอร์ URL แต่เมื่อตรวจสอบบันทึกจะเห็นว่าทั้งพารามิเตอร์ URL ที่มีอยู่และพารามิเตอร์ใหม่อยู่ในตัวแปร argsแต่ฉันจะนำสิ่งเหล่านี้เข้าสู่คำขอ GET ไปยังเซิร์ฟเวอร์ได้อย่างไร?

2021/08/03 02:27:07 [ประกาศ] 3202#3202: *27 "^/testing/signup$" ตรงกับ "/testing/signup", ลูกค้า: 146.75.168.54, เซิร์ฟเวอร์: example.com, คำขอ: " GET /testing/signup?id=1 HTTP/2.0", โฮสต์: "www.example.com"
2021/08/03 02:27:07 [ประกาศ] 3202#3202: *27 ข้อมูลที่เขียนใหม่: "/testing/signup", args: "org=1231564&id=1", ลูกค้า: 146.75.168.54, เซิร์ฟเวอร์: example.com คำขอ: "GET /testing/signup?id=1 HTTP/2.0", โฮสต์: "www.example.com"
sv flag
ยินดีต้อนรับสู่ ServerFault คุณต้องใช้ `$uri` ในเงื่อนไข `if` Btw `$request_uri` มีข้อโต้แย้งเช่นกัน นั่นเป็นสาเหตุที่โค้ดของคุณใช้ไม่ได้หากคำขอมีพารามิเตอร์ของตัวเอง เช่น `www.example.com/testing/signup?abc=hello` โดยทั่วไป พารามิเตอร์ดั้งเดิมจะถูกต่อท้ายเมื่อเราพยายามเพิ่มพารามิเตอร์ของเราเอง
Score:1
ธง sv

ยินดีต้อนรับสู่ ServerFault

ตัวแปร request_uri มี "URI คำขอดั้งเดิมแบบเต็ม (พร้อมอาร์กิวเมนต์)" นั่นเป็นสาเหตุที่คำขอที่มีพารามิเตอร์ที่มีอยู่ใช้ไม่ได้กับโค้ดต้นฉบับ เราสามารถใช้แทนได้ ยูริ นั่นคือ ทำให้เป็นมาตรฐาน. ดังนั้นรหัสต่อไปนี้จะใช้งานได้ ...

ถ้า ( $uri = "/ทดสอบ/สมัคร" ) {
    เขียนใหม่ ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 สุดท้าย;
}

ตำแหน่ง /การทดสอบ/ {
    try_files $uri $uri/ /testing/index.php;
}

โปรดทราบว่าพารามิเตอร์ดั้งเดิมนั้นถูกผนวกเข้ากับพารามิเตอร์ที่เพิ่มด้วยตนเองของเรา ดังนั้นสำหรับคำขอเช่น www.example.com/testing/signup?abc=hello, URI จะถูกเขียนใหม่เข้าไป www.example.com/testing/signup?org=7689879&type_id=65454&abc=hello.

Michael Hampton avatar
cz flag
สิ่งนี้จะทำงานได้อย่างสมบูรณ์ แน่นอนว่ามันจะส่งผลให้เกิดการวนซ้ำของการเปลี่ยนเส้นทางที่ไม่สิ้นสุด เพราะเขาเปลี่ยนเส้นทางกลับไปยังเส้นทาง URL เดียวกัน แต่นั่นเป็นคำถามที่แตกต่างไปจากเดิมอย่างสิ้นเชิง
Neil Simpson avatar
ng flag
ใช่ นั่นคือปัญหา ฉันยังคงวนลูป มีวิธีแก้ไขที่จะไม่ทำให้เกิดการวนซ้ำหรือไม่?
sv flag
นั่นเป็นคำถามที่แตกต่างกัน โปรดสร้างคำถามอื่นและโพสต์การกำหนดค่าทั้งหมดเพื่อดูปัญหาการวนซ้ำไม่สิ้นสุด
Neil Simpson avatar
ng flag
ไม่ใช่คำถามที่แตกต่างกันจริง ๆ ดังนั้นมันจะถูกบล็อก ปัญหาของการวนซ้ำอยู่ในคำถามเดิมและวิธีแก้ปัญหาที่ทำให้เกิดลูปนั้นไม่ใช่วิธีแก้ปัญหาจริงๆ วิธีแก้ปัญหาของคุณใช้ไม่ได้ @pothi-kalimuthu

โพสต์คำตอบ

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