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.
Ce sujet contient 8 réponses, a 3 voix.
Dernière mise à jour par Nicolas V. Il y a 1 année et 4 mois.
Assisté par: Nicolas V..
Auteur | Articles |
---|---|
Septembre 19, 2023 à 11:40 pm #14425685 | |
francoisT-16 |
Bonjour, Le site a récemment rencontré des erreurs 500. J'ai réussi à résoudre le problème en modifiant le fichier .htaccess. Plus précisément, j'ai remplacé : <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /en/ RewriteRule ^index\.php$ - [L] RewriteRule ^en/wp-login.php /en/wp-login.php [QSA,L] RewriteRule ^fr/wp-login.php /en/wp-login.php [QSA,L] RewriteRule ^es/wp-login.php /en/wp-login.php [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /en/index.php [L] </IfModule> par : <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule ^en/wp-login.php /wp-login.php [QSA,L] RewriteRule ^fr/wp-login.php /wp-login.php [QSA,L] RewriteRule ^es/wp-login.php /wp-login.php [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> Ce problème semble correspondre à un souci connu décrit ici : https://wpml.org/errata/htaccess-is-rewritten-with-language-folder/ Selon cette documentation, le problème proviendrait de multiples appels à "flush_rewrite_rules(true)". Comment puis-je identifier le coupable de ces appels ? La solution temporaire proposée dans la documentation est-elle toujours valide ? Idéalement, je souhaiterais identifier la source du problème plutôt que d'appliquer un patch. Voici les principaux éléments de mon environnement : Serveur O2Switch Merci pour votre aide. |
Septembre 20, 2023 à 5:55 am #14426293 | |
Andrés Supporter
Les langues: Anglais (English ) Espagnol (Español ) Français (Français ) Fuseau horaire: Europe/Paris (GMT+01:00) |
Bonjour, Bienvenue à l'assistance technique de WPML. En effet, cette solution est toujours valide. Or, si vous souhaitez identifier la source du problème, s'il vous plaît, essayez le suivant dans votre site de test : Dans votre site de test, est- ce que vous pouvez vérifier si cette situation arrive quand: Cordialement, |
Septembre 20, 2023 à 8:58 am #14427861 | |
francoisT-16 |
Bonjour Andrés, Merci pour votre réponse rapide. Je n'ai actuellement plus de site de test. Cependant, lors de mes précédentes tentatives, je n'avais pas réussi à reproduire le problème sur celui-ci (ce n'est pas la première fois que je rencontre des erreurs 500). Il est possible que le souci provienne d'une incompatibilité entre WPML et LiteSpeed Cache. En effet, LiteSpeed Cache ne fonctionne pas sur les sous-domaines comme mon site de test (c'est la seul différence notable avec le site live). Pour un autre client ayant un environnement très similaire (WPML, LiteSpeed Cache, thème Flatsome) et qui a rencontré le même problème pendant longtemps, j'ai découvert récemment que l'erreur venait d'un mauvais port (11211 au lieu de 6379) configuré dans LiteSpeed Cache pour le cache objet en mode Redis. Cependant, j'ai vérifié pour ce site-ci, et le port est correctement configuré. Le fix "temporaire" suggéré dans la documentation date déjà de 2017. N'y a-t-il pas eu de nouvelles avancées depuis ? Je me demande, peut-être à tort, si ce fix ne fait que "cacher la misère" sans résoudre le problème à la source. Merci pour votre aide. |
Septembre 20, 2023 à 11:21 pm #14433873 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, Je vous réponds rapidement car Andrés n'est pas disponible. LiteSpeed Cache est déclaré compatible avec WPML mais il se peut qu'il y ait un conflit/bug dans une configuration spécifique. Essayez de désactiver ce plugin pour un moment le temps de voir si cela résout le problème. De cette manière nous serons sûrs de la source du problème, ce qui aidera à trouver une solution par la suite. L'idéal serait de pourvoir retravailler sur une copie staging comme Andrés l'a mentionné afin de tester WPML dans un environnement minimal en suivant cette procédure: En ce qui concerne le workaround, cette solution est toujours d'actualité. En cherchant rapidement sur le forum vous trouverez plusieurs tickets datant de 2022 par exemple celui-ci: https://wpml.org/es/forums/topic/errores-500-problema-en-htacess/ |
Septembre 21, 2023 à 8:09 am #14435601 | |
francoisT-16 |
Bonjour Nicolas, Le problème étant aléatoire, le staging n'avait bien souvent pas de problème durant de longues périodes. La comparaison n'est pas totalement fiable, car le staging est inactif, contrairement au site live qui reçoit des visites et des commandes. Aussi, O2Switch indique que LiteSpeedCache n'est pas compatible sur les sous-domaines donc non actif sur le staging. Je vais chercher une solution pour pouvoir loguer les appels à la fonction flush_rewrite_rules(true) pour trouver quel plugin/thème génère ces nombreux appels. Quant à la question de savoir ce que fait le fix temporaire (temporaire depuis 2017 tout de même) proposé par WPML et si celui-ci "cache la misère", la réponse de GPT-4 est la suivante : : "Le code donné est un correctif temporaire pour un problème où le fichier `.htaccess` est mal écrit à cause de l'interaction entre WPML (un plugin de traduction pour WordPress) et certains autres plugins tiers qui réinitialisent fréquemment les règles de réécriture (`flush_rewrite_rules()`). 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; } Voici une explication détaillée de ce que fait le code : 1. **Ajout d'un filtre** : `add_filter('mod_rewrite_rules', 'fix_rewritebase');` 2. **Fonction `fix_rewritebase`** : 3. **Récupération de l'URL de base du site** : 4. **Récupération de l'URL de base de WPML** : 5. **Remplacement des règles** : 6. **Retour des règles modifiées** : En résumé, ce patch modifie la génération du fichier .htaccess pour qu'il utilise l'URL de base de WPML au lieu de celle du site. Cela permet de s'assurer que l'URL correcte est utilisée même si un autre plugin tente de réinitialiser les règles de réécriture pendant que WPML est en cours d'utilisation. Si vous vous demandez si ce patch "cache la misère", la réponse est oui. C'est en effet un correctif temporaire. Le vrai problème est que le ou les plugins tiers réinitialisent les règles de réécriture trop souvent. Le correctif idéal serait de trouver et de corriger le ou les plugins tiers responsables. En attendant, ce patch empêche le site de se casser à cause de cette interaction." Merci Nicolas. |
Septembre 21, 2023 à 5:39 pm #14441489 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour,
Oui c'est exactement ce que fait ce code.
Je vous explique pourquoi le code dans cet errata est toujours valide aujourd'hui. Cette solution est donc proposée aux utilisateurs de tout niveau. Mais je suis d'accord avec vous, si vous arrivez à identifier le plugin responsables des nombreux flush_rewrite_rules ce serait l'idéal. |
Septembre 26, 2023 à 11:16 pm #14469885 | |
francoisT-16 |
Merci Nicolas. |
Septembre 26, 2023 à 11:30 pm #14469887 | |
francoisT-16 |
Re bonsoir, J'ai malheureusement parlé trop vite, une nouvelle erreur 500 est survenue à cause de la réécriture du htaccess 🙁 Merci. |
Septembre 27, 2023 à 8:48 pm #14477501 | |
Nicolas V. Supporter
Les langues: Anglais (English ) Français (Français ) Fuseau horaire: America/Lima (GMT-05:00) |
Bonjour, Pour clarifier tout cela: Ce que nous pouvons faire: Je peux ensuite installer cette copie sur nos serveurs, et si le problème se reproduit (ce n'est pas garanti), je ferai remonter cela à notre équipe de deuxième niveau. |