Score:0

Nginx: เขียนไฟล์ใหม่จากไดเร็กทอรีไปยังรูท

ธง um

ฉันมีเซิร์ฟเวอร์ nginx ที่ทำงานบนสภาพแวดล้อม linux และกำลังจัดการโดเมน www.example1.com และ www.example2.com. แต่ละโดเมนมีแผนผังเว็บไซต์ของตัวเอง ดังนั้นฉันจึงต้องโหลดแผนผังเว็บไซต์ที่ถูกต้องสำหรับแต่ละโดเมนตามที่อยู่ในไดเรกทอรีราก เช่น

www.example1.com/sitemap.xml โหลดมาจาก www.example1.com/sitemaps/1/sitemap.xml

และ:

www.example2.com/sitemap.xml โหลดมาจาก www.example2.com/sitemaps/2/sitemap.xml

เพื่อให้บรรลุเป้าหมายนี้ ฉันได้พยายามกำหนดค่าสำหรับแต่ละโดเมนและเขียนใหม่ตามค่าตัวแปรดังต่อไปนี้:

ใน nginx.conf:

แผนที่ $http_host $โดเมน {
    www.example1.com 1;
    www.example2.com 2;
}

และใน sitemap.conf:

ถ้า($โดเมน=1){
  เขียนแผนผังไซต์ใหม่/1/แผนผังไซต์(.*)$ /แผนผังไซต์ล่าสุด;
}
ถ้า($โดเมน=2){
  เขียนแผนผังเว็บไซต์/2/แผนผังเว็บไซต์(.*)$ /แผนผังเว็บไซต์ล่าสุด;
}

แต่ด้วยเหตุผลบางประการการกำหนดค่านี้จึงส่งคืน 404

คำแนะนำใด ๆ

sv flag
`sitemap.conf` สามารถลดความซับซ้อนได้เช่น `เขียนแผนผังไซต์/$domain/sitemap(.*)$ /sitemap ล่าสุด;' สิ่งนี้ไม่ได้ป้องกัน 404 แม้ว่า 404 น่าจะเกิดจากสาเหตุอื่น (นอกเหนือจากตัวอย่างที่แชร์ใน OP) โปรดแชร์การกำหนดค่าทั้งหมดเพื่อแก้ไขปัญหา
Score:2
ธง gr

ฉันไม่เห็นการกำหนดค่าทั้งหมดของคุณ และไม่ทราบว่าคุณรวมค่านั้นไว้ที่ไหนและอย่างไร แผนผังเว็บไซต์.conf ไฟล์ แต่ฉันอยากทำด้วยวิธีที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ที่มีอยู่ของคุณ แผนที่ บล็อกมันจะดูเหมือน

สถานที่ = /sitemap.xml {
    # ใช้ตัวแปร '$domain' เป็นส่วนหนึ่งของเส้นทางเต็มไปยังไฟล์ 'sitemap.xml'
    รูท /var/www/domain/sitemaps/$domain; #ที่นี่ไม่มีเครื่องหมายทับ!
}

หรือแม้กระทั่งรับเส้นทางแบบเต็ม /แผนผังเว็บไซต์/N/ โฟลเดอร์ที่มี แผนที่ คำสั่งเช่น

แผนที่ $http_host $sitemap_path {
    www.example1.com /var/www/example1.com/sitemaps/1;
    www.example2.com /var/www/example1.com/sitemaps/2;
}

และ

สถานที่ = /sitemap.xml {
    # ใช้ตัวแปร '$sitemap_path' เป็นเส้นทางแบบเต็มไปยังไฟล์ 'sitemap.xml'
    รูท $sitemap_path; #ที่นี่ไม่มีเครื่องหมายทับ!
}

หากคุณยังต้องการใช้ เขียนใหม่ คำสั่งสำหรับงานนี้ คุณใช้งานไม่ถูกต้อง คุณสามารถลองสิ่งนี้:

ถ้า ($ โดเมน = 1) {
    เขียนใหม่ ^/sitemap\.xml$ /sitemaps/1/sitemap.xml สุดท้าย;
}
ถ้า ($ โดเมน = 2) {
    เขียนใหม่ ^/sitemap\.xml$ /sitemaps/2/sitemap.xml สุดท้าย;
}

หรือเพิ่มประสิทธิภาพมากยิ่งขึ้น:

ถ้า ($ โดเมน) {
    เขียนใหม่ ^/sitemap\.xml$ /sitemaps/$domain/sitemap.xml ล่าสุด;
}
Eng7 avatar
um flag
การกำหนดค่าแบบเต็มจะทำให้สับสน นั่นเป็นเหตุผลที่ฉันเพิ่มเฉพาะส่วนที่เกี่ยวข้องของการกำหนดค่า
Eng7 avatar
um flag
การเปลี่ยน root dir สำหรับตำแหน่ง sitemap.xml ได้ผลสำหรับฉัน สำหรับส่วนที่เขียนใหม่ ใช้ "สุดท้าย" เพื่ออะไร
Ivan Shatsky avatar
gr flag
คุณสามารถพิจารณาได้ว่าเป็นการคัดลอกและวางจากการกำหนดค่าดั้งเดิมของคุณโดยทั่วไป แฟล็ก "last" หมายความว่ากระบวนการ URI ทั้งหมดควรเกิดขึ้นอีกครั้ง แต่คราวนี้สำหรับค่า "$uri" ที่เปลี่ยนแปลง

โพสต์คำตอบ

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