WPML
Statut
En attente de l’auteur
Signalé pour
WPML SEO 2.1.0
Extension/thème associé
Yoast SEO
Étiquettes de sujet
Compatibility

Aperçu de l’anomalie

Lors de l’utilisation de l’extension Yoast SEO Pro, les règles de redirection RegEx ne fonctionnent pas de la même manière dans les différentes langues. Le comportement est différent pour la langue par défaut et la langue secondaire.

Par exemple, si vous créez une règle de redirection comme ^/en/faq/(.+)$ vers /en/support/$1, elle peut ne pas fonctionner comme prévu lorsque vous essayez d’y accéder via http://example.com/en/faq/test/.

Solution de contournement

Option 1


Comme solution de contournement rapide, vous pouvez créer des règles différentes.
En suivant l’exemple initial :

  • ^/faq/(.+)$ redirige vers /support/$1

  • ^faq/(.+)$ redirige vers /en/support/$1

Option 2


Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.

  • Ouvrez le fichier …/wp-content/plugins/wp-seo-multilingual/classes/class-wpml-wpseo-redirection.php.

  • Cherchez la ligne 34.

  • Remplacez ce code :
    foreach ( $redirections as $redirection ) {
        if ( $redirection['origin'] === $url || '/' . $redirection['origin'] === $url ) {
            return true;
        }
    }


  • Par :
    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;
    				}
    }

Toutes les anomalies connues →