- الحالة
- في انتظار المطور
- أُبلغ عنها لـ
- 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; } }