Skip Navigation

This thread is resolved. Here is a description of the problem and solution.

Problem:
The client's website is experiencing intermittent 404 errors on all pages except the homepage after implementing WPML with the Russian language. The temporary fix involves regenerating the permalinks, but the issue recurs without a clear pattern.

Solution:
We could not reproduce the error locally. As a temporary solution, we suggest adding the following code to the theme's

functions.php

file, which may prevent external plugins from causing the .htaccess file to be rewritten and leading to 404 errors in secondary languages:

add_filter('mod_rewrite_rules', 'fix_rewritebase');<br />function fix_rewritebase($rules){<br />    $home_root = parse_url(home_url());<br />    if ( isset( $home_root['path'] ) ) {<br />        $home_root = trailingslashit($home_root['path']);<br />    } else {<br />        $home_root = '/';<br />    }<br /> <br />    $wpml_root = parse_url(get_option('home'));<br />    if ( isset( $wpml_root['path'] ) ) {<br />        $wpml_root = trailingslashit($wpml_root['path']);<br />    } else {<br />        $wpml_root = '/';<br />    }<br /> <br />    $rules = str_replace("RewriteBase $home_root", "RewriteBase $wpml_root", $rules);<br />    $rules = str_replace("RewriteRule . $home_root", "RewriteRule . $wpml_root", $rules);<br /> <br />    return $rules;<br />}

For guidance on modifying the

functions.php

file, please refer to this documentation.

If this solution does not seem relevant, or if you need further assistance, please open a new support ticket with us.

This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

Tagged: 

This topic contains 9 replies, has 2 voices.

Last updated by Lucas Vidal de Andrade 1 year, 1 month ago.

Assisted by: Lucas Vidal de Andrade.

Author Posts
November 30, 2023 at 11:34 am #14961751

enriqueG-5

En esta página web sucede que desde que implementamos WPML con el idioma en Ruso, de vez en cuando, sin un patrón claro, pierde la estructura de enlaces permanentes de WordPress y entonces da error 404 en todas las páginas excepto en la home.
La solución que tengo que aplicar cuando me llega el aviso de uptime monitor es la de volver a generar los permalinks y de nuevo vuelve a funcionar, pero no sabemos cuando volverá a caer la web.
¿A qué se puede deber? Es una web corporativa sin nada más que WPML en Ruso y entiendo que no debería afectar.

November 30, 2023 at 5:58 pm #14965945

Lucas Vidal de Andrade
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch ) Portuguese (Brazil) (Português )

Timezone: America/Sao_Paulo (GMT-03:00)

Hola,
Me gustaría acceder a una versión de staging de tu sitio web. ¿Podrías concederme acceso, por favor?
Encontrarás los campos necesarios para esto debajo del área de comentarios cuando inicies sesión para dejar tu próxima respuesta. La información que ingreses es privada, lo que significa que solo tú y yo podemos verla y tener acceso a ella.

Quizás necesite replicar tu sitio localmente. Para esto, necesitaré instalar temporalmente un plugin llamado "Duplicator" o "All in One WP Migration" en tu sitio. Esto me permitirá crear una copia de tu sitio y tu contenido. Una vez resuelto el problema, eliminaré el sitio local. Avísame si estás de acuerdo con esto.

IMPORTANTE

Por favor, haz una copia de seguridad de los archivos del sitio y la base de datos antes de proporcionarnos acceso.
Si no ves los campos de wp-admin/FTP, esto significa que los detalles de tu sitio y login serán PUBLICADOS. NO publiques los detalles de tu sitio a menos que veas los campos requeridos de wp-admin/FTP. Si no los ves, pídeme que habilite el cuadro privado. El cuadro privado se ve así:
hidden link

December 1, 2023 at 11:35 am #14972067

Lucas Vidal de Andrade
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch ) Portuguese (Brazil) (Português )

Timezone: America/Sao_Paulo (GMT-03:00)

Disculpa, creo que no fui claro en mi último mensaje. Necesito acceso a la versión de staging del sitio web, si existe. El propósito es poder modificar diferentes configuraciones y probar distintas soluciones para que luego puedas aplicarlas en tu sitio de producción. ¿Podrías concederme acceso a la versión de staging? Si no existe, por favor confírmame si puedo hacer una copia local de tu sitio web.

December 1, 2023 at 12:15 pm #14972379

enriqueG-5

No dispongo de staging. Puedes descargar una copia en tu servidor local sin problema.
Gracias

December 1, 2023 at 2:28 pm #14973681

Lucas Vidal de Andrade
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch ) Portuguese (Brazil) (Português )

Timezone: America/Sao_Paulo (GMT-03:00)

Lamentablemente, las credenciales que enviaste para acceder a wp-admin son incorrectas. ¿Podrías verificarlas y reenviármelas? He marcado la próxima respuesta como privada nuevamente 🙂

December 4, 2023 at 4:22 pm #14989535

Lucas Vidal de Andrade
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch ) Portuguese (Brazil) (Português )

Timezone: America/Sao_Paulo (GMT-03:00)

Hola,

gracias por el acceso. He activado el registro de depuración (log de debug) en tu sitio, pero de inmediato no pude encontrar ningún problema que lleve al error 404 que mencionaste. Te pido que me comuniques aquí en este ticket la próxima vez que ocurra, para que pueda analizar el registro de errores e investigar tu problema.

December 4, 2023 at 4:26 pm #14989605

enriqueG-5

Tal y como te comentaba al principio del ticket, es complicado porque sucede de vez en cuando, sin un patrón. De repente pierde las urls y debo regenerarlas guardando de nuevo los enlaces permanentes.
Informarte de esto no es sencillo porque el cliente no puede tener la web caída mucho rato.
Lo intentaré pero no será fácil.
Sucede cada día, en la próxima ocasión lo intentamos.

December 4, 2023 at 4:31 pm #14989625

Lucas Vidal de Andrade
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch ) Portuguese (Brazil) (Português )

Timezone: America/Sao_Paulo (GMT-03:00)

Los problemas quedarán registrados en el log de manera permanente, basta con que ocurra una vez. La próxima vez que suceda, por favor avísame, así podré revisar los registros para ver qué está ocurriendo.

December 5, 2023 at 8:59 am #14994087

enriqueG-5

Hola, esta noche ha vuelto a pasar.
Adjunto 2 capturas de monitoreo web.
Gracias

Captura de pantalla 2023-12-05 a las 9.59.06.png
Captura de pantalla 2023-12-05 a las 9.59.20.png
December 5, 2023 at 7:48 pm #15002495

Lucas Vidal de Andrade
Supporter

Languages: English (English ) Spanish (Español ) German (Deutsch ) Portuguese (Brazil) (Português )

Timezone: America/Sao_Paulo (GMT-03:00)

No pude reproducir el error localmente. Dejé el sitio funcionando todo el día y, hasta ahora, no obtuve el error 404 para las páginas en ruso. Mientras tanto, te pido que intentes una solución temporal, que podría funcionar en tu caso. Algunos plugins externos a veces hacen que el archivo .htaccess, responsable de la estructura de permalinks, sea reescrito y cause errores 404 en los idiomas secundarios, exactamente como está ocurriendo contigo. Te pido que agregues el siguiente código en el archivo functions.php de tu tema y compartas los resultados conmigo:

add_filter('mod_rewrite_rules', 'fix_rewritebase');
function fix_rewritebase($rules){
    $home_root = parse_url(home_url());
    if ( isset( $home_root['path'] ) ) {
        $home_root = trailingslashit($home_root['path']);
    } else {
        $home_root = '/';
    }
 
    $wpml_root = parse_url(get_option('home'));
    if ( isset( $wpml_root['path'] ) ) {
        $wpml_root = trailingslashit($wpml_root['path']);
    } else {
        $wpml_root = '/';
    }
 
    $rules = str_replace("RewriteBase $home_root", "RewriteBase $wpml_root", $rules);
    $rules = str_replace("RewriteRule . $home_root", "RewriteRule . $wpml_root", $rules);
 
    return $rules;
}

Si necesitas ayuda, puedes contactarme nuevamente. Aquí tienes un enlace con explicaciones sobre cómo modificar el archivo functions.php: hidden link