- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- WPML Multilingual CMS 3.2.7
- แก้ไขใน
- 3.3
ภาพรวมของปัญหา
เมื่อใช้ภาษาในโดเมนและปลั๊กอิน ซึ่งเอาต์พุตขึ้นอยู่กับการกรองฟังก์ชัน home_url() ที่ถูกต้องเพื่อแทนที่ URL หน้าแรกของไซต์ของคุณเป็นเวอร์ชันภาษาที่ถูกต้องในลิงก์ ลิงก์อาจแสดงผลอย่างไม่ถูกต้อง ในกรณีส่วนใหญ่ สิ่งนี้หมายความว่ามีการใช้โดเมนเวอร์ชันภาษาเริ่มต้นในลิงก์ แทนที่จะเป็นเวอร์ชันภาษารองที่ถูกต้องของโดเมนนั้น
อีกตัวอย่างหนึ่งที่พบบ่อยของปัญหานี้คือ ไซต์แมป XML ของ Yoast WP SEO ไม่แสดงผลอย่างถูกต้องในภาษารอง และแสดงเพียงหน้าสีขาวแทน
ปัญหาดังกล่าวไม่ได้เกิดจากปลั๊กอิน WPML แต่เกิดจากความแตกต่างระหว่างเว็บเซิร์ฟเวอร์ Apache และ Nginx เว็บเซิร์ฟเวอร์ Apache จะกำหนดค่าตัวแปร superglobal $_SERVER['SERVER_NAME'] ด้วยโฮสต์ที่เบราว์เซอร์ร้องขอ Nginx จะไม่ทำเช่นนี้ตามค่าเริ่มต้น แต่สามารถกำหนดค่าให้ทำเช่นนั้นได้เช่นกัน
เพื่อดำเนินการดังกล่าว วิธีแก้ปัญหาชั่วคราวข้างต้นจะใช้ตัวแปร $host ที่เว็บเซิร์ฟเวอร์ Nginx จัดเตรียมไว้ให้ และส่งต่อไปยัง PHP-FPM daemon ที่จัดการไฟล์ .php ของคุณผ่านการเรียก fastgi_param ดังที่แสดงไว้ข้างต้น
จากนั้น PHP-FPM daemon จะสามารถใช้ตัวแปรนี้ผ่านตัวแปร superglobal $_SERVER และการตั้งค่านี้จะเลียนแบบพฤติกรรมเริ่มต้นของการตั้งค่า Apache + PHP(cgi) ที่พบได้ทั่วไปมากกว่า
วิธีแก้ปัญหาชั่วคราว
ค้นหาส่วนที่อธิบายวิธีการจัดการไฟล์ .php ในไฟล์การตั้งค่า nginx ของไซต์ของคุณ
ส่วนนี้จะมีลักษณะคล้ายกับตัวอย่างด้านล่าง ซึ่งประกอบด้วยคำสั่ง location และส่วนท้ายของไฟล์ .php
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass php;
fastcgi_keep_conn on;
fastcgi_index index.php;
}
เพิ่มบรรทัด
fastcgi_param SERVER_NAME $host;
ลงไปเพื่อเปิดใช้งานดัชนี SERVER_NAME ในตัวแปร superglobal $_SERVER ของคุณ ดังนี้:
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass php;
fastcgi_keep_conn on;
fastcgi_param SERVER_NAME $host;
fastcgi_index index.php;
}สิ่งนี้จะทำให้การกรอง home_url() ทำงานเหมือนกับการตั้งค่า Apache ทุกประการ ซึ่งช่วยแก้ไขความแตกต่างของพฤติกรรมและปัญหาที่เกิดจากการใช้ Nginx