WPML

סקירת התקלה

בעת שימוש בתוסף 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;
    				}
    }

כל התקלות הידועות

עדיין נתקל בבעיה זו?

אם העדכון אינו פותר זאת, פתח פנייה לתמיכה ואנו נבדוק זאת יחד איתך.