Score:1

เปลี่ยนเส้นทางภาษา Nginx + Wordpress ผิดกับภาษาเริ่มต้น

ธง us

เปลี่ยนเส้นทางภาษา Nginx + Wordpress ผิดกับภาษาเริ่มต้น

ขออภัยสำหรับคำถามซ้ำที่นี่: การเปลี่ยนเส้นทางภาษา Nginx + Wordpress

ใช้งานได้ทั้งหมด แต่สำหรับภาษา EN เริ่มต้น

ฉันแค่ต้องการเปลี่ยนเส้นทางผู้เยี่ยมชม JP ไปยังไดเร็กทอรี /ja/ หรือประเทศอื่นๆ ไปยังไดเร็กทอรีอื่นในภายหลัง

สำหรับตอนนี้ ฉันต้องการให้ประเทศอื่นๆ ทั้งหมดเป็นโดเมนหลัก

กฎที่ฉันใช้คือ:

แผนที่ $http_accept_language $lang {
    เริ่มต้น en;
    ~จาจา;
}

...

เขียนใหม่ ^/$ /$lang/ ถาวร;

กฎนี้เปลี่ยนเส้นทางผู้เข้าชมรายอื่นทั้งหมดไปที่ mydomain.com/en/ ซึ่งแน่นอนว่าเป็น 404 เนื่องจาก EN เป็นภาษาหลักของฉัน!

=======================================

นี่คือกฎทั้งหมดในการกำหนดค่าฝั่งไซต์

หวังว่าทุกคนสามารถช่วยฉันได้!

แผนที่ $http_accept_language $lang {
เริ่มต้น en;
~จาจา;
}

เซิร์ฟเวอร์ 
{ 
ฟัง 80; 
ฟัง 443 ssl http2; 
server_name mydomain.com www.mydomain.com; 
ดัชนี index.php index.html index.htm default.php default.htm default.html; 
รูท /www/wwwroot/mydomain.com;

#REWRITE-เริ่ม

เขียนใหม่ ^/$ /$lang/ ถาวร;

รวม /www/server/panel/vhost/rewrite/mydomain.com.conf;
#REWRITE-END


ตำแหน่ง ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
    กลับ 404;
}


สถานที่ ~ \.ที่รู้จักกันดี{
    อนุญาตทั้งหมด
}

ตำแหน่ง ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    หมดอายุ 30d;
    error_log /dev/null;
    access_log /dev/null;
}

ตำแหน่ง ~ .*\.(js|css)?$
{
    หมดอายุ 12h;
    error_log /dev/null;
    access_log /dev/null; 
}
access_log /www/wwwlogs/mydomain.com.log;
error_log /www/wwwlogs/mydomain.com.log;
}
Richard Smith avatar
jp flag
คุณมี `default en;` ในแผนที่ของคุณ - คุณกำลังบอกว่าคุณไม่ต้องการให้ค่าเริ่มต้นเปลี่ยนเส้นทางไปที่ `/en/`?
Matthew avatar
us flag
ใช่ @Richard Smithï¼ เพียงแค่ต้องการเปลี่ยนเส้นทางภาษาที่แปลแล้วไปยังไดเร็กทอรีของพวกเขา ส่วนอื่นๆ ทั้งหมดไปที่รูท: mydomian.com
Matthew avatar
us flag
สวัสดี @Richard Smith ï¼ ขอบคุณสำหรับการตอบกลับของคุณ แต่ขออภัยเนื่องจากฉันไม่ทราบวิธีเขียนโค้ด ดังนั้นคุณช่วยฉันด้วยเครื่องหมาย ` if ($lang) { ... }`
Matthew avatar
us flag
ฉันเพิ่งโพสต์ไฟล์กำหนดค่าทั้งด้านด้านล่าง โปรดช่วยฉันตรวจสอบด้วย
Matthew avatar
us flag
ขออภัยความผิดพลาดของฉัน เพิ่งลบการตอบกลับและแก้ไขคำถาม!
sv flag
ยินดีต้อนรับสู่ ServerFaultคำสั่งการเขียนใหม่ของคุณสามารถเขียนได้เช่น `if ( $lang != "en" ) { เขียนใหม่ ^/$ /$lang/ ถาวร; }` เพื่อให้บรรลุผลที่ต้องการ
Score:0
ธง jp

หากคุณเอา เริ่มต้น en; สายจากคุณ แผนที่, คุณค่าของ $lang จะกลายเป็นสตริงว่างซึ่งถูกประเมินว่าเป็นเท็จใน ถ้า การแสดงออก. ดู เอกสารนี้ สำหรับรายละเอียด

คุณสามารถแทนที่ เขียนใหม่ ^/$ ... คำสั่งด้วยก ที่ตั้ง = / บล็อก. ดู เอกสารนี้ สำหรับรายละเอียด

ตัวอย่างเช่น:

แผนที่ $http_accept_language $lang {
    ~จาจา;
}

เซิร์ฟเวอร์ {
    ...
    ที่ตั้ง = / {
        ถ้า ($lang) {
            ส่งคืน 301 /$lang/$is_args$args;
        }
    }
    ...
}

ดู เอกสารนี้ ข้อความที่ได้รับอนุญาตภายใน a ถ้า บล็อกที่ซ้อนอยู่ภายในไฟล์ ที่ตั้ง บล็อก.

Matthew avatar
us flag
ใช้งานได้ แต่ปัญหาอื่นมา: สำหรับภาษาอื่น มันเปลี่ยนเส้นทางเป็น mydomain.com// มี 2 "//" ในตอนท้าย

โพสต์คำตอบ

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