Sauter la navigation

Ce sujet est résolu. Voici une description du problème et de la solution.

Problème :
Vous rencontrez des erreurs 404 sur les URL des pages traduites après avoir activé le plugin Newsletter, SMTP, Email marketing and Subscribe forms by Brevo. L'erreur survient après la première consultation et actualisation de la page.
Solution :
Le problème provient de l'appel trop fréquent de la fonction flush_rewrite_rules(true) par le plugin de Brevo. Nous vous recommandons de contacter l'auteur du plugin pour résoudre ce problème de manière définitive. En attendant, vous pouvez appliquer une solution temporaire :
1. Accédez au fichier functions.php de votre thème enfant via FTP (n'oubliez pas de faire une sauvegarde de ce fichier).
2. Ajoutez le code suivant :

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 cette solution ne résout pas votre problème ou si elle devient obsolète, nous vous recommandons de vérifier les problèmes connus, de confirmer que vous avez installé les dernières versions de vos thèmes et plugins, et d'ouvrir un nouveau ticket de support si nécessaire.

Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.

Marqué : 

Ce sujet contient 11 réponses, a 2 voix.

Dernière mise à jour par Nicolas V. Il y a 6 mois.

Assisté par: Nicolas V..

Auteur Articles
juin 27, 2024 à 12:26 pm #15843825

mathiasJ-2

Contexte de la question:
Je rencontre un problème de compatibilité avec le plugin Newsletter, SMTP, Email marketing and Subscribe forms by Brevo. Dès que ce plugin est activé, j'ai des 404 sur les URL des pages traduites. La première consultation de la page (ou du produit) s'affiche correctement mais si j'actualise la page, j'ai une 404. Comme il s'agit d'un environnement de développement, je peux vous fournir des accès back-office et FTP si vous le souhaitez. URL du problème: lien caché

Symptômes:
Dès que le plugin Newsletter, SMTP, Email marketing and Subscribe forms by Brevo est activé, les URL des pages traduites affichent une erreur 404 après actualisation.

Questions:
Comment résoudre le problème de compatibilité entre WPML et le plugin Newsletter, SMTP, Email marketing and Subscribe forms by Brevo?
Pourquoi les pages traduites affichent-elles une erreur 404 après actualisation lorsque le plugin est activé?

juin 27, 2024 à 2:18 pm #15844706

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Merci d'avoir contacté le support de WPML. Généralement les erreurs 404 sur des URLs existantes sont dû au fait que WordPress n'arrive pas à résoudre l'url.

1. Allez dans "Réglages > Permaliens" pour les sauvegarder à nouveau.

2. Il se peut que deux types de contenus donne la même structure d'URL. Je vous donne un exemple: Si vous avez un Custom Post Type /team pour les membres de votre équipe et que vous avez aussi une page /team
Lorsque vous avez l'url domain.com/team/nicolas, WordPress aura du mal à savoir s'il s'agit d'une page enfant de Team ou d'un membre de votre équipe. (J'espère que cela a du sens).

3. UN autre point car vous mentionnez les produits: Allez dans "WooCommerce > WooCommerce Multilingual > Statut" et vérifiez que les pages du magasin WooCommerce soit traduites.

4. J'ai visité le site sans avoir de 404, mais peut être que vous avez désactivé ce plugin? De plus, je ne trouve pas ce plugin dans la liste des plugins compatibles. Cela ne signifie pas qu'il soit incompatible, mais c'est juste que nous ne l'avons pas testé et nous n'avons pas de documentation. Cependant j'ai trouvé d'anciens tickets sur le forum (je pense que à l'époque le plugin était "by sendinblue") et les problèmes reportés sont de traduction des options et non de 404.
Donc si le problème persiste, merci de me donner accès à ce site staging. J'ai activé un champ privé pour votre prochaine réponse où vous pourrez partager ces informations de manière confidentielle avec notre support. Ne partagez pas votre propre compte admin, créez un nouveau compte que vous pourrez éliminer une fois l'assistance terminée.

IMPORTANT: Avant de continuer, faites un backup complet de votre site et base de données.

juin 27, 2024 à 11:22 pm #15847098

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Merci pour l'accès.

Voici une vidéo avec mes commentaires: lien caché

- J'ai noté que l'erreur 404 ne provient pas de WordPress mais de votre serveur.
- Je n'ai pas observé de répertoire /en sur votre serveur mais veuillez vérifier via FTP
- Ce n'est pas non plus un problème de .htaccess corrompu

Merci de contacter votre hébergeur pour voir s'il y a un problème ou un restriction au niveau du serveur.

Comme test rapide, il suffit de passer les format d'URL de répertoire (/en) à paramètre (?lang=en) pour voir que les 404 disparaissent.

juin 30, 2024 à 5:21 pm #15862965

mathiasJ-2

Bonjour Nicolas,

Après des tests complémentaires, le problème vient bien du plugin de Brevo.
Ce plugin semble modifier le fichier htaccess en ajoutant des instructions qui viennent en conflit avec les URL "/en".

Je vous tiens informé si je trouve comment résoudre le souci définitivement.

Merci en tout cas pour vos investigations.

Mathias

juillet 1, 2024 à 12:11 pm #15868454

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour Mathias,

Je laisse le ticket ouvert en attente de votre feedback. Merci de me tenir informé.

juillet 2, 2024 à 2:43 pm #15876404

mathiasJ-2

Bonjour Nicolas,

Je continue mes investigations et le problème vient bien du fichier .htaccess avec les instructions de gestion des URL.

C'est vraiment étrange car j'ai des modifications de ce fichier toutes les minutes avec une traduction automatique des commentaires dans ce fichier.

Ce texte est traduit automatiquement toutes les minutes :
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.

# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.

Je ne vois pas trop qui pourrait venir ce commentaire hormis WPML.

Et surtout, j'ai ces 2 lignes qui s'ajoute et disparaisse de manière aléatoire sans que j'arrive à identifier le déclencheur.
RewriteBase /en/
RewriteRule . /en/index.php [L]

Est-ce des instructions ajouter habituellement par WPML pour gérer les URL des langues dans les permaliens ?

Sinon, je vais contacter Brevo en parallèle car je confirme que le souci des 404 n'apparait que quand leur plugin est activé.

Si vous avez une idée ou des précisions pour ces instructions dans le htaccess, je suis preneur. Sinon, je vous tiens informé des mes investigations avec Brevo.

Merci,
Mathias

juillet 2, 2024 à 8:50 pm #15878168

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Pour les commentaires en FR c'est normal car avec WPML vous déclarez utiliser WP en FR.

Par contre par défaut les règles de "rewrite" devraient être:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Est-il possible de prendre une copie de votre site pour tester cela sur nos serveurs?
Pour cela, vous devez installer temporairement l'extension "Duplicator". Elle vous permettra de faire une copie complète de votre site et de son contenu.
J'ai activé un champ privé pour votre prochaine réponse pour partager les fichiers (package + installer).
- Vous pouvez exclure /wp-uploads pour réduire le poids de la copie
- Une fois le package est prêt, si les fichiers sont trop lourds, vous pouvez partager un lien Google Drive, Dropbox, WeTransfer ou autre.

Une fois le problème résolu, j'éliminerai cette copie. Dites moi si vous êtes d'accord.
https://wpml.org/fr/faq/provide-supporters-copy-site/

juillet 3, 2024 à 10:29 pm #15887165

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Merci, j'installe cette copie sur nos serveurs et je reviens vers vous dès que j'ai un feedback.

juillet 5, 2024 à 1:06 am #15894522

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Désolé pour le délai mais j'ai eu du mal à installer votre copie sur nos serveurs. J'ai essayé de multiples fois mais j'ai toujours un timeout.

Vidéo: lien caché

Au final j'ai installé la copie en local sur ma machine pour voir si elle fonctionnait:
- J'ai eu une erreur critique pour le plugin PDF Invoices & Packing Slips for WooCommerce que j'ai désactivé.
- J'ai activé Newsletter, SMTP, Email marketing and Subscribe forms by Brevo et
Brevo - WooCommerce Email Marketing était déjà activé.
- J'ai visité la version EN du site, j'ai cliqué sur le produit depuis la page d'accueil
- J'ai rafraichi la page du produit, j'ai ajouté le produit au panier, j'ai fais plusieurs va et vient et rafraichissement mais je n'ai pas réussi à reproduire le problème.
- J'ai inspecté le fichier .htaccess et il n'a pas était modifié

Avez-vous des instructions précises pour reproduire les erreurs 404?

juillet 10, 2024 à 2:08 pm #15928544

mathiasJ-2

Bonjour Nicolas,

Désolé pour le délai de réponse. J'ai eu une urgence sur un autre projet ces derniers jours.

J'ai bien regarder votre vidéo loom, et je n'ai pas d'explication.
Pour votre erreur fatal liée au plugin de facture PDF c'est certainement dû a un chemin serveur dans le functions.php du thème child lié à ce plugin.

De mon côté, j'ai toujours le même problème dès que j'active le plugin Newsletter de Brevo.
Ce qui est le plus étrange, c'est que dès que ce plugin est activé, j'ai le fichier htaccess qui est modifié toutes les minutes. J'ai même parfois les commentaires dans ce fichiers htaccess qui sont traduits !

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.

devient

# BEGIN WordPress
# Les directives (lignes) entre « BEGIN WordPress » et « END WordPress » sont générées
# dynamiquement, et doivent être modifiées uniquement via les filtres WordPress.
# Toute modification des directives situées entre ces marqueurs sera surchargée.

A un moment, j'ai pensé que cela pouvait venir d'une configuration serveur. Mais j'ai dupliqué le site sur un autre serveur dédié et j'ai absolument le même problème.

J'ai également contacté le support technique de Brevo, mais aucun retour depuis une semaine...

Du coup, je suis totalement bloqué et je n'ai aucune piste où chercher hormis ce plugin Brevo.

Si besoin, je peux vous donner accès au back-office du site et au serveur en FTP si vous souhaitez regarder.

Merci !
Mathias

juillet 11, 2024 à 12:15 pm #15934916

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

Je vais tester cela sur le site staging ou vous m'avez donné accès et je vais faire remonter votre ticket au deuxième niveau. Je reviens vers vous dès que j'ai leur feedback.

juillet 12, 2024 à 10:43 am #15941972

Nicolas V.
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: America/Lima (GMT-05:00)

Bonjour,

L'équipe de deuxième niveau a trouvé le problème. Il semble que le plugin de Brevo appelle la fonction flush_rewrite_rules(true) trop souvent. Voici la documentation que j'ai utilisé pour régler le problème: https://wpml.org/faq/why-is-htaccess-getting-overwritten-with-the-language-folder-on-my-wpml-website/

L'idéal serait que l'auteur de ce plugin résolve le problème, pourriez vous partager le lien dans le ticket que vous avez créé afin de les pointer dans la bonne direction?

En attendant voici la solution d'appoint:
- Accédez au fichier functions.php de votre thème enfant via FTP (faites un back up de ce fichier) et ajoutez ceci:

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;
}
juillet 12, 2024 à 10:53 am #15942016

mathiasJ-2

Bonjour Nicolas,

Merci pour ce retour positif !
Effectivement, le problème est corrigé.

Je transmets de suite analyse à Brevo pour qu'il puisse corriger leur plugin.

Mathias