Score:3

ผลกระทบของเครื่องหมายคำถามต่อท้าย (?) ใน URI แทนที่คำสั่ง nginx rewrite

ธง cn

ฉันพยายามที่จะเข้าใจความแตกต่างระหว่าง เขียนใหม่ ^/search/(.*)$ /search.php?q=$1 และ เขียนใหม่ ^/search/(.*)$ /search.php?q=$1?. ความแตกต่างคือการต่อท้าย ? ใน URI แทนที่

หากคำขอ URI เป็น /search/apple?opt=123 แล้ว URI จะเขียนใหม่แตกต่างกันอย่างไร?

ฉันคาดเดาสำหรับ เขียนใหม่ ^/search/(.*)$ /search.php?q=$1 มันจะเป็น /search.php?q=apple&opt=123 และสำหรับ เขียนใหม่ ^/search/(.*)$ /search.php?q=$1? มันจะเป็น /search.php?q=apple? แต่ฉันไม่แน่ใจ.

sv flag
คำตอบที่เป็นไปได้ https://serverfault.com/a/973708/102173
Logan Lee avatar
cn flag
เหมือง @PothiKalimuthu เป็นกรณีที่ซับซ้อนกว่านี้เล็กน้อย
sv flag
การเดาของคุณที่กล่าวถึงใน OP นั้นถูกต้อง
Logan Lee avatar
cn flag
@PothiKalimuthu โอเค ขอบคุณ!
Score:2
ธง sv

ตาม https://nginx.org/r/rewrite...

หากสตริงแทนที่มีอาร์กิวเมนต์คำขอใหม่ อาร์กิวเมนต์คำขอก่อนหน้าจะถูกต่อท้าย หากเป็นเช่นนี้ ไม่ต้องการ ให้ใส่เครื่องหมายคำถามที่ท้ายสตริงการแทนที่ หลีกเลี่ยงการต่อท้าย

นี่คือรหัสขั้นต่ำเปล่าเพื่อทดสอบสถานการณ์นี้ ...

# ไฟล์กำหนดค่า /etc/nginx/nginx.conf:
เหตุการณ์ {}

http {
    เซิร์ฟเวอร์ {
        เขียนใหม่ ^/search/(.*)$ /search.php?q=$1 ถาวร;
        # เขียนใหม่ ^/search/(.*)$ /search.php?q=$1? ถาวร;
    }
}

เพิ่มการตั้งค่าสถานะถาวรสำหรับการทดสอบเท่านั้น เราสามารถบันทึกโค้ดด้านบนเป็น nginx.conf และเริ่ม Nginx ขด เอาต์พุตสำหรับรหัสด้านบนยืนยัน /search/apple?opt=123 จะเปลี่ยนเส้นทางไปที่ /search.php?q=apple&opt=123.

ในทำนองเดียวกันสำหรับเงื่อนไขการเขียนซ้ำครั้งที่สอง...

# ไฟล์กำหนดค่า /etc/nginx/nginx.conf:
เหตุการณ์ {}

http {
    เซิร์ฟเวอร์ {
        # เขียนใหม่ ^/search/(.*)$ /search.php?q=$1 ถาวร;
        เขียนใหม่ ^/search/(.*)$ /search.php?q=$1? ถาวร;
    }
}

ขด เอาต์พุตสำหรับรหัสด้านบนยืนยัน /search/apple?opt=123 จะเปลี่ยนเส้นทางไปที่ /search.php?q=apple.

ดังนั้น,

หาก URI คำขอคือ /search/apple?opt=123 แล้ว URI ที่เขียนใหม่แตกต่างกันอย่างไร

ฉันเดาว่าจะเขียนใหม่ ^/search/(.)$ /search.php?q=$1 มันจะเป็น /search.php?q=apple&opt=123 และสำหรับเขียนใหม่ ^/search/(.)$ /search.php?q=$1? มันจะเป็น /search.php?q=apple? แต่ฉันไม่แน่ใจ.

คุณพูดถูกและนี่คือผลลัพธ์ที่คาดหวัง

โพสต์คำตอบ

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