Score:1

เปลี่ยนเส้นทาง Ngnix สำหรับไดเรกทอรีย่อยหลายระดับ

ธง ma

ฉันมี URL เช่นโครงสร้างต่อไปนี้:

xyz/asset.html
abc/test.html
xyz/abc/test.html
xyz/abc/qwerty/test2.html

ฉันต้องการเปลี่ยนเส้นทาง:

xyz/asset.html ถึง xyz/asset

xyz/abc/test.html ถึง xyz/abc/test

xyz/abc/qwerty/test2.html ถึง xyz/abc/qwerty/test2

ขณะนี้ฉันมีกฎการเปลี่ยนเส้นทางนี้ในการกำหนดค่า ngnix ของฉันและมันใช้งานได้กับการเปลี่ยนเส้นทางไดเรกทอรีระดับแรก:

ตำแหน่ง ~ ^/(xyz|abc).html { กลับ 301 /$1; }

สิ่งนี้ใช้ได้กับโดยตรงระดับแรก แต่ใช้ไม่ได้กับไดเร็กทอรีย่อย จะบรรลุสิ่งนี้ได้อย่างไร? ขอบคุณสำหรับความช่วยเหลือ

Score:1
ธง sv

มีหลายวิธีในการแก้ปัญหานี้ นี่คือวิธีหนึ่ง...

ขั้นตอนแรกคือการจับส่วนของ URI ที่ต้องเขียนใหม่ จากนั้น เราสามารถเปลี่ยนเส้นทางโดยใช้ a ที่ตั้ง บล็อกหรือใช้ เขียนใหม่ เงื่อนไข.

โดยใช้ ที่ตั้ง บล็อคด้วย ชื่อจับภาพ...

สถานที่ ~ ^/(?<ตัวแปร>[/a-zA-Z0-9]+)\.html$ { ส่งคืน 301 /$ตัวแปร; }

หรือ

ตำแหน่ง ~ ^/([/a-zA-Z0-9]+)\.html$ { ส่งคืน 301 /$1; }

โดยใช้ เขียนใหม่...

เขียนใหม่ ^/(?'custom_url'[/a-zA-Z0-9]+)\.html$ /$custom_url ถาวร;

รองรับ Nginx ชื่อจับภาพ โดยใช้ไวยากรณ์ต่อไปนี้:

?<ชื่อ> ไวยากรณ์ที่เข้ากันได้กับ Perl 5.10 รองรับตั้งแต่ PCRE-7.0
?'ชื่อ' ไวยากรณ์ที่เข้ากันได้กับ Perl 5.10 รองรับตั้งแต่ PCRE-7.0
?P<ชื่อ> ไวยากรณ์ที่เข้ากันได้กับ Python รองรับตั้งแต่ PCRE-4.0

อ้างอิง: https://nginx.org/en/docs/http/server_names.html (ใต้หัวเรื่อง ชื่อนิพจน์ทั่วไป).

ma flag
ขอบคุณสำหรับคำตอบ โพธี ฉันลองใช้กฎตำแหน่งที่คุณระบุ มันใช้งานได้กับ sub-dir ระดับที่ 2 (xyz/abc/test.html ถึง xyz/abc/test) แต่ไม่ใช่สำหรับ (yz/abc/qwerty/test2.html ถึง xyz/abc/qwerty/test2)
sv flag
หากคุณใช้กฎ `สถานที่' โปรดตรวจสอบให้แน่ใจว่ามีกฎ 'สถานที่' เริ่มต้น เช่น `สถานที่ / {}` นี่คือที่เก็บตัวอย่างเพื่อทดสอบสถานการณ์ข้างต้นด้วย URL ทดสอบที่มีอยู่ (ชั่วคราวสำหรับตอนนี้)... https://github.com/pothi/qa-nginx/tree/main/serverfault/1070388
ma flag
ขอบคุณเพื่อน! นั่นเป็นประโยชน์ มันได้ผล

โพสต์คำตอบ

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