Ce sujet est résolu. Voici une description du problème et de la solution.
Problème:
Le client avait des erreurs 500 (erreur serveur) sur son site et son hébergeur lui a indiqué que cela était lié aux directives de WPML dans le htaccess.
Solution:
Effectivement, les directives WPML présentes dans le htaccess ne correspondaient pas à la configuration du site dans "WPML > Langues > Format d'URL de langue". J'ignore la cause (peut être un changement de configuration) mais une solution simple était:
- Éliminer ou renommer le fichier htaccess
- Puis d'aller dans "Réglages > Permaliens" pour les sauvegarder
- WordPress va créer un nouveau fichier htaccess avec les bonnes directives
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.
Je rencontrais souvent des error500 sur mon site que je n'arrivais à régler qu'en clearant mes permaliens. J'ai finis par demander au support de mon hébergeur d'où venait le problème. Ils ont identité un pb venant de WPML.
Je vous joint la transcription
Vladimir Iv : This is your current .htaccess file
# 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. <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] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /en/index.php [L] </IfModule> # END WordPress
Vladimir Iv.: Do you see the en/ and fr/ parts to it ? They are causing this
Vladimir Iv.: If we remove them now the site should start working again
Vladimir Iv.: Or what you can do instead is to replace it with default .htaccess
Les langues: Anglais (English )Français (Français )
Fuseau horaire: America/Lima (GMT-05:00)
Bonjour,
Bienvenue sur le support de WPML.
Effectivement ce sont des règles ajoutées par WPML. Cependant elles ne correspondent pas à la configuration présente dans votre fichier de débogage. C'est sans doute le problème ici!
Les règles du htaccess indiquent que l'Anglais est la langue par défaut et qu'elle est présente dans un repertoire /en (lien caché)
Et les règles suivantes redirigent donc la page de login aussi bien FR que EN à la page login dans ce répertoire Anglais /en/login.php
Or, la configuration de votre fichier de débogage indique que la langue par défaut est le Français et elle n'est pas dans un répertoire (donc lien caché).
Je pense que vous pouvez renommez ce fichier htaccess en OLD_htaccess. Puis retournez dans "Réglages > Permaliens". Si WordPress ne trouve pas le fichier htacces, il va le créer à nouveau.
Désolé, mais je serais incapable de savoir si cela a fonctionné.
Voici le contenu du nouveau htaccess :
# 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.
<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]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Il semblerait que non.
J'ouvrirai un nouveau ticket avec lien vers cet échange si je vois que le problème persiste.
Encore une fois, merci pour votre aide rapide Nicolas ❤️