Lors d'une redirection avec entête 301 , la règle est de mettre l'URL complète (http://....)
Ensuite, je te suggère de modifier tes règles comme ceci :
RewriteRule ^/?(.*)$ http://ledomaine.tld/fr/$1 [R=301,L]
(comme c'est une redirection externe, le L est implicite...)
et
RewriteRule ^/?(fr|gb)/(.*)\.html$ /index.php?p=$2&lg=$1 [QSA,L]
Tu ne peux jamais être certain que le / sera (ou ne sera pas) transmis à mod_rewrite.
Là au moins cela devrait fonctionner partout.
De plus, un choix de texte s'écrit
(texte1|texte2
) et non [texte1|texte2]
Ce message a été modifié par Dan - 22 juillet 2011 - 17:37.
Raison de l'édition : Modifié là seconde règle, pour la simplifier
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH