- Trạng thái
- Đang chờ nhà phát triển
- Được báo cáo cho
- WPML SEO 2.1.0
- Plugin/giao diện liên quan
- Yoast SEO
- Thẻ chủ đề
- Compatibility
Tổng quan về lỗi
Khi sử dụng plugin Yoast SEO Pro, các quy tắc chuyển hướng RegEx không hoạt động giống nhau trên các ngôn ngữ khác nhau. Có sự khác biệt về cách hoạt động đối với ngôn ngữ mặc định và ngôn ngữ phụ.
Ví dụ, nếu bạn tạo một quy tắc chuyển hướng như ^/en/faq/(.+)$ đến /en/support/$1, nó có thể không hoạt động như mong đợi khi cố gắng truy cập thông qua http://example.com/en/faq/test/.
Giải pháp tạm thời
Tùy chọn 1
Như một giải pháp tạm thời nhanh chóng, bạn có thể tạo các quy tắc khác nhau.
Theo ví dụ ban đầu:
- ^/faq/(.+)$ chuyển hướng đến /support/$1
- ^faq/(.+)$ chuyển hướng đến /en/support/$1
Tùy chọn 2
Vui lòng đảm bảo đã tạo một bản sao lưu đầy đủ cho trang web của bạn trước khi tiếp tục.
- Mở tệp …/wp-content/plugins/wp-seo-multilingual/classes/class-wpml-wpseo-redirection.php.
- Tìm dòng 34.
- Thay thế mã này:
foreach ( $redirections as $redirection ) { if ( $redirection['origin'] === $url || '/' . $redirection['origin'] === $url ) { return true; } } - Bằng:
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; } }