- สถานะ
- รอผู้พัฒนา
- รายงานสำหรับ
- WPML SEO 2.1.0
- ปลั๊กอิน/ธีมที่เกี่ยวข้อง
- Yoast SEO
- แท็กหัวข้อ
- Compatibility
ภาพรวมของปัญหา
เมื่อใช้ปลั๊กอิน Yoast SEO Pro กฎการเปลี่ยนเส้นทาง RegEx จะไม่ทำงานเหมือนกันในแต่ละภาษา การทำงานจะแตกต่างกันระหว่างภาษาเริ่มต้นและภาษารอง
ตัวอย่างเช่น หากคุณสร้างกฎการเปลี่ยนเส้นทางอย่าง ^/en/faq/(.+)$ ไปเป็น /en/support/$1, กฎดังกล่าวอาจไม่ทำงานตามที่คาดไว้เมื่อพยายามเข้าถึงผ่าน http://example.com/en/faq/test/
วิธีแก้ปัญหาชั่วคราว
ตัวเลือกที่ 1
สำหรับวิธีแก้ปัญหาชั่วคราวอย่างรวดเร็ว คุณสามารถสร้างกฎที่แตกต่างกันได้
ตามตัวอย่างเริ่มต้น:
- ^/faq/(.+)$ เปลี่ยนเส้นทางไปยัง /support/$1
- ^faq/(.+)$ เปลี่ยนเส้นทางไปยัง /en/support/$1
ตัวเลือกที่ 2
โปรดตรวจสอบให้แน่ใจว่าได้สำรองข้อมูลทั้งหมดของไซต์ของคุณก่อนดำเนินการต่อ
- เปิดไฟล์ …/wp-content/plugins/wp-seo-multilingual/classes/class-wpml-wpseo-redirection.php
- ค้นหาบรรทัดที่ 34
- แทนที่โค้ดนี้:
foreach ( $redirections as $redirection ) { if ( $redirection['origin'] === $url || '/' . $redirection['origin'] === $url ) { return true; } } - ด้วย:
foreach ( $redirections as $redirection ) { if($redirection['format'] == 'regex'){ // Ensure $url starts with /, if regex would need to check if string starts with this is needed. if(strpos($url, '/', 0) !== 0){ $url = '/' . $url; } // Lets use ~ as a regex delimiter instead of /, as we are matching a URL. preg_match('~' . $redirection['origin'] . '~', $url, $matches); if(count($matches) > 0){ return true; } } else if($redirection['origin'] === $url || '/' . $redirection['origin'] === $url){ return true; } }