WPML

Panoramica del problema

Quando utilizzi il plugin Yoast SEO Pro, le regole di reindirizzamento RegEx non funzionano allo stesso modo nelle diverse lingue. Il comportamento è diverso per la lingua predefinita e la lingua secondaria.

Ad esempio, se crei una regola di reindirizzamento come ^/en/faq/(.+)$ verso /en/support/$1, potrebbe non funzionare come previsto quando tenti di accedervi tramite http://example.com/en/faq/test/.

Soluzione alternativa

Questo problema è stato risolto. L’aggiornamento all’ultima versione risolve il problema sul tuo sito, quindi hai bisogno di questa soluzione alternativa solo se non puoi ancora aggiornare.

Opzione 1

Come soluzione alternativa rapida, puoi creare regole diverse.
Seguendo l’esempio iniziale:
  • ^/faq/(.+)$ reindirizza a /support/$1
  • ^faq/(.+)$ reindirizza a /en/support/$1

Opzione 2

Assicurati di avere un backup completo del tuo sito prima di procedere.
  • Apri il file …/wp-content/plugins/wp-seo-multilingual/classes/class-wpml-wpseo-redirection.php.
  • Cerca la riga 34.
  • Sostituisci questo codice:
    foreach ( $redirections as $redirection ) {
        if ( $redirection['origin'] === $url || '/' . $redirection['origin'] === $url ) {
            return true;
        }
    }
  • Con:
    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;
    				}
    }

Tutti i problemi noti

Riscontri ancora questo problema?

Se l’aggiornamento non risolve il problema, fai una richiesta di supporto e lo analizzeremo con te.