WPML
Estado
Esperando al autor
Notificado para
WPML SEO 2.1.0
Plugin/tema relacionado
Yoast SEO
Etiquetas de temática
Compatibility

Resumen del problema

Al usar el plugin Yoast SEO Pro, las reglas de redirección RegEx no funcionan de la misma manera en los distintos idiomas. Existe un comportamiento diferente para el idioma predeterminado y el idioma secundario.

Por ejemplo, si crea una regla de redirección como ^/en/faq/(.+)$ a /en/support/$1, es posible que no funcione como se espera al intentar acceder a través de http://example.com/en/faq/test/.

Solución alternativa

Opción 1


Como solución alternativa rápida, puede crear reglas diferentes.
Siguiendo el ejemplo inicial:

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

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

Opción 2


Asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.

  • Abra el archivo …/wp-content/plugins/wp-seo-multilingual/classes/class-wpml-wpseo-redirection.php.

  • Busque la línea 34.

  • Reemplace este código:
    foreach ( $redirections as $redirection ) {
        if ( $redirection['origin'] === $url || '/' . $redirection['origin'] === $url ) {
            return true;
        }
    }


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

Todos los problemas conocidos →