Score:1

ตำแหน่ง Nginx ตรงกับ regex ปี/เดือน/วัน/*

ธง fm

ฉันมีรูปแบบ URL เก่าเพื่อเปลี่ยนเส้นทางไปยังตำแหน่งใหม่ใน nginx

URL ที่สะอาดทั่วไปมีลักษณะดังนี้ example.com/2021/06/13/78676.html?..

ฉันพยายามจับคู่จำนวนหลักในแต่ละบล็อกโดยประมาณ:

ตำแหน่ง ~ "^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+).html" {
   เขียนใหม่ ^ /archive.php?q=$1;
}

ฉันไปผิดตรงไหนโปรด..

Michael Hampton avatar
cz flag
คุณกำลังมีปัญหาอะไร
TELA avatar
fm flag
อ๊ะ! ยกโทษให้ฉัน ฉันลืมแสดงความคิดเห็นเกี่ยวกับคำสั่ง 'return 404' ของ Certbot ที่ส่วนท้ายของไฟล์ ฉันใช้การเปลี่ยนเส้นทางนี้กับหน้าที่ไม่ใช่ https ทุกอย่างทำงานได้ดี ขอขอบคุณ
Score:2
ธง jp

ปัญหาแรกคือ URI ของ Nginx ทั้งหมดเริ่มต้นด้วยคำนำหน้า /. ดังนั้นนิพจน์ทั่วไปของคุณจะไม่ตรงกัน

ปัญหาที่สองคือการจับตัวเลขจะถูกเขียนทับทุกครั้งที่มีการประเมินนิพจน์ทั่วไปใหม่ ดังนั้นในการกำหนดค่าของคุณ $1 จะว่างเปล่าเสมอ

คุณสามารถใช้การจับภาพที่มีชื่อ:

ตำแหน่ง ~ "^/[0-9]{4}/[0-9]{2}/[0-9]{2}/(?<value>[0-9]+)\.html" {
    เขียนใหม่ ^ /archive.php?q=$value สุดท้าย;
}

หรือวางการจับตัวเลขใน เขียนใหม่ คำแถลง:

เขียนใหม่ "^/[0-9]{4}/[0-9]{2}/[0-9]{2}/(?<value>[0-9]+)\.html" /archive php?q=$1 ล่าสุด;

หรือใช้ก try_files คำแถลง แทน เขียนใหม่:

ตำแหน่ง ~ "^/[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)\.html" {
    try_files ไม่มีอยู่ /archive.php?q=$1;
}
TELA avatar
fm flag
ฉันพบว่ามีปัญหากับการจับชื่อเช่นกันหากมีคนส่งตัวแปร GET 'q' พร้อมกับ URL คำขอ เช่น /2021/06/13/78676.html?a=1&q=asdf ในกรณีนั้น แม้แต่ค่าที่มีชื่อก็ดูเหมือนว่าจะถูกเขียนทับโดย new $q = asdf วิธีแก้ปัญหาใด ๆ ?
Richard Smith avatar
jp flag
หากคุณต้องการเก็บค่าพารามิเตอร์อื่นๆ (เช่น `a=1`) เอาไว้ มันค่อนข้างยุ่งยาก มิฉะนั้น ให้ใช้ `?` ต่อท้ายค่าแทนที่ในคำสั่ง `rewrite` และอาร์กิวเมนต์เดิม **ไม่** จะถูกต่อท้าย ตัวอย่างเช่น: `เขียนใหม่ ^ /archive.php?q=$value? ล่าสุด;' - ดู [เอกสารนี้](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite)
do flag
Btw ทำซ้ำจุดที่กล่าวถึงที่อื่น ตรวจสอบให้แน่ใจว่าคุณใช้เครื่องหมายอัญประกาศคู่บนสตริง regex ที่มีวงเล็บปีกกา มิฉะนั้นจะไม่ทำงาน... นอกจากนี้ ไม่ควรต้องจบสตริงด้วยเครื่องหมาย `$` ใดๆ เช่นกัน

โพสต์คำตอบ

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