WPML
סטטוס
ממתין למפתח
דווח עבור
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;
    				}
    }

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