หาก WPML ไม่ให้คุณเลือกไดเรกทอรีภาษา (เช่น http://example.com/es/ สำหรับภาษาสเปน) เป็นเพราะระบบพยายามเข้าถึง URL ดังกล่าวแล้วพบข้อผิดพลาด ต่อไปนี้คือสิ่งที่คุณสามารถตรวจสอบเพื่อให้แน่ใจว่าไดเรกทอรีภาษาจะทำงานได้
ต่อไปนี้คือสิ่งที่คุณต้องตั้งค่าเพื่อให้ไดเรกทอรีภาษาทำงานได้:
- เปิดใช้งานการเขียน URL ใหม่
- อนุญาตให้ WordPress มีสิทธิ์อ่านและเขียนในโฟลเดอร์
- ตรวจสอบให้แน่ใจว่าไซต์ของคุณใช้โครงสร้างลิงก์ถาวรแบบ "pretty"
อย่างที่คุณเห็น ไม่จำเป็นต้องสร้างไดเรกทอรีจริงบนเซิร์ฟเวอร์ การเลือกให้มีภาษาในไดเรกทอรีสามารถทำได้ผ่านการเขียน URL ใหม่
WPML ตรวจสอบได้อย่างไรว่าสามารถเปิดใช้งานภาษาในไดเรกทอรีได้หรือไม่
WPML พยายามเข้าถึงการเรียกทดสอบเพื่อตรวจสอบว่าภาษาในไดเรกทอรีจะทำงานได้หรือไม่ การเรียกทดสอบนี้คือ:
yourdomain/LANGUAGE/?____icl_validate_domain=1
ตัวอย่างเช่น เพื่อตรวจสอบว่าภาษาสเปนเปิดใช้งานสำหรับโดเมนของเราเอง (wpml.org) หรือไม่ เราจะไปที่ URL ต่อไปนี้ในเบราว์เซอร์ของเรา:
http://wpml.org/es/?____icl_validate_domain=1
เมื่อคุณทำเช่นนี้ คุณจะเห็นหน้าเว็บที่ดูว่างเปล่า คลิกขวาที่หน้าเว็บแล้วเลือก ดูรหัสต้นฉบับของหน้า คุณควรเห็นเนื้อหาต่อไปนี้:
<!--http://wpml.org-->
สิ่งนี้จะบอก WPML ว่า WordPress อนุญาตให้เข้าถึงโครงสร้าง URL นี้ หากการเรียกทดสอบผ่าน WPML จะอนุญาตให้ใช้ภาษาตามไดเรกทอรีได้ มิฉะนั้น คุณจะได้รับข้อความบางอย่างที่อธิบาย (คร่าว ๆ) ว่าปัญหาคืออะไร
หาก WPML เห็นหน้าข้อผิดพลาด ระบบจะปิดการใช้งานฟีเจอร์นี้และแสดงข้อความแสดงข้อผิดพลาดสีแดง พร้อมคำอธิบายที่เป็นไปได้ว่าเหตุใดจึงถูกปิดการใช้งาน
ข้อสำคัญ: WPML เข้าถึง URL การตรวจสอบความถูกต้องโดยทำการเรียก fopen ไปยัง URL นั้น โดยปกติแล้วจะคล้ายกับสิ่งที่เบราว์เซอร์ทำ แต่ไม่เหมือนกันเสียทีเดียว ตรวจสอบให้แน่ใจว่า fopen เปิดใช้งานอยู่บนเซิร์ฟเวอร์ของคุณ คุณสามารถเพิ่มโค้ดต่อไปนี้ลงในไฟล์การกำหนดค่า PHP ของคุณเพื่อให้แน่ใจว่าจะไม่ถูกบล็อก:
SecFilterEngine Off
ตรวจสอบให้แน่ใจว่า WordPress เปิดใช้งานการเขียน URL ใหม่
เพื่อเปิดใช้งานการเขียน URL ใหม่ WordPress จะสร้างไฟล์ชื่อ .htaccess ในโฟลเดอร์ที่ติดตั้ง WordPress จะสร้างไฟล์นี้หากคุณใช้ URL อื่นที่ไม่ใช่ URL เริ่มต้น ไฟล์นั้นควรมีเนื้อหาต่อไปนี้:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressหากไม่มีไฟล์นี้ ให้ลองสร้างขึ้นมา หากมีไฟล์อยู่แต่ว่างเปล่า ให้คัดลอกเนื้อหาเหล่านี้แล้วบันทึก
การสามารถเขียน URL ใหม่ได้หมายความว่าอย่างไร
การเขียน URL ใหม่เป็นกลไกที่ซับซ้อนซึ่ง WordPress ใช้งานอย่างมาก เพื่อให้สิ่งนี้ทำงานได้ เว็บเซิร์ฟเวอร์ (โดยปกติคือ Apache) จะต้องสามารถเขียน URL ใหม่ได้ และ WordPress ต้องได้รับอนุญาตให้จัดการตรรกะการเขียนใหม่
ใน Apache mod-rewrite จะทำหน้าที่เขียน URL ใหม่ ซึ่งเป็นโมดูลมาตรฐานที่เปิดใช้งานโดยค่าเริ่มต้น หากคุณใช้ Apache และไม่สามารถเปิดใช้งานไดเรกทอรีภาษาได้ ให้ตรวจสอบว่า mod-rewrite ทำงานอยู่สำหรับไซต์ของคุณหรือไม่ หากคุณไม่แน่ใจว่าต้องทำอย่างไร ให้ส่งอีเมลถึงผู้ให้บริการโฮสติ้งของคุณ คุณสามารถใช้ข้อความนี้:
สวัสดีปลั๊กอิน WordPress ที่ฉันต้องการใช้จำเป็นต้องเปิดใช้งานโมดูล mod-rewrite คุณช่วยตรวจสอบให้ฉันและบอกฉันได้ไหมว่า mod-rewrite เปิดใช้งานสำหรับเว็บไซต์ของฉันหรือไม่ http://example.com
สมมติว่าเปิดใช้งานแล้ว ตอนนี้ WordPress จำเป็นต้องสามารถควบคุมกฎการเขียน URL ได้ เพื่อให้สิ่งนี้เกิดขึ้น WordPress จะต้องสามารถเขียนลงในโฟลเดอร์ที่ติดตั้งได้
ตรวจสอบให้แน่ใจว่า WordPress มีสิทธิ์อ่านและเขียนในโฟลเดอร์
ขอย้ำอีกครั้ง หากคุณใช้ Apache ให้ค้นหาว่า Apache ทำงานภายใต้ผู้ใช้ใด และอนุญาตให้ผู้ใช้นั้นมีสิทธิ์อ่านและเขียนในโฟลเดอร์ที่ติดตั้ง WordPress คุณสามารถทำได้โดยใช้โปรแกรม FTP ของคุณ ผ่านเชลล์ หรือผ่านอีเมล
สวัสดีอีกครั้งฉันต้องการความช่วยเหลืออีกเรื่อง ฉันได้ติดตั้ง WordPress ในไดเรกทอรีนี้:
YOUR_WP_INSTALL_DIRECTORY
คุณช่วยเปลี่ยนสิทธิ์ของไฟล์สำหรับไดเรกทอรีทั้งหมด (แบบเรียกซ้ำ) เพื่อให้เว็บเซิร์ฟเวอร์สามารถอ่านและเขียนที่นั่นได้หรือไม่ ฉันต้องการให้ WordPress สามารถเขียนลงในไฟล์บางไฟล์ได้
ตอนนี้ ให้ตรวจสอบอีกครั้ง
ตรวจสอบให้แน่ใจว่าไซต์ของคุณใช้โครงสร้างลิงก์ถาวรแบบ "pretty"
ไซต์ของคุณจำเป็นต้องใช้โครงสร้างลิงก์ถาวรแบบ "pretty" คุณสามารถเปลี่ยนโครงสร้างลิงก์ถาวรของไซต์ได้ในการตั้งค่า WordPress ของคุณ
การแก้ปัญหา
หากคุณใช้ CDN เช่น Cloudflare อาจมีการบล็อกภาษาในไดเรกทอรีไม่ให้ทำงานอย่างถูกต้องโดยการลบความคิดเห็น HTML ออก ด้วยเหตุนี้ คุณอาจเห็นข้อผิดพลาดแบบ false-positive ซึ่งแสดงคำเตือนที่เกี่ยวข้องกับ
?____icl_validate_domain=1 โดยไม่มีปัญหาใด ๆ บนส่วนหน้าเว็บไซต์
ต้องการความช่วยเหลือหรือไม่
หากยังคงไม่ทำงาน โปรดตั้งคำถามในฝ่ายสนับสนุนของ WPML