mosaic40 Posté 1 Février 2010 Posté 1 Février 2010 Bonjour, je suis nouveau, donc d'abord merci. Voilà ce que je ne comprends pas: Google m'a référencé il y a quelques temps avec une adresse -http://www.monsite.com/xx/index.php?lang=xx Depuis j'ai modifié l'arborescence de mon site, le répertoire xx n'existe plus et je voudrais que le fichier htaccess renvoie vers l'adresse : -http://www.monsite.com/index.php?module=accueil〈=xx J'ai essayé l'une et l'autre des 2 formules suivantes, mais aucune ne marche (ne match): RewriteRule ^lang=([a-z]{2})$ index.php?module=accueil〈=$1 [L] RewriteRule /([a-z]{2})/.*\.php index.php?lang=$1 [L] J'ai mis une balise <base> qui indique la racine de mon site. Qu'est-ce que j'ai raté? Merci
Dan Posté 1 Février 2010 Posté 1 Février 2010 Bonjour et bienvenue à bord, Tu as raté le fait que la QUERY_STRING doit se traiter différemment. RewriteCond %{QUERY_STRING} lang=([a-z]{2})RewriteCond %{QUERY_STRING} ! module=accueilRewriteRule .* http://www.monsite.com/index.php?module=accueil&lang=%1 [R=301,L] La deuxième condition sert à éviter de rediriger l'url -http://www.monsite.com/index.php?module=accueil&lang=xx vu qu'elle l'est déjà. Mais cette règle ne redirigera qu'une seule page qui sera sous la forme -http://www.monsite.com/xx/index.php?lang=xx Tu es certain que c'est ce que tu souhaites
mosaic40 Posté 1 Février 2010 Auteur Posté 1 Février 2010 (modifié) Bonsoir, Merci de me tendre une perche. Je pense avoir compris le principe. Je ne voudrais pas abuser, mais comment faire pour récupérer le "ZZ" (abréviation d'1 langue) dans : />http://www.monsite.com/ZZ/index.php?lang=xx au cas où ZZ serait différent de xx. Ce n'est pas très logique, je sais, mais le principe m'intéresse. A bientôt Modifié 1 Février 2010 par mosaic40
Dan Posté 2 Février 2010 Posté 2 Février 2010 En ajoutant une troisième condition, telle que RewriteCond %{REQUEST_URI} /([A-Z]{2})/ qui te permettra de détecter 2 caractères en majuscules encadrés de / et / Si la casse n'est pas toujours en majuscules, ajoute [NC] en fin de cette ligne Tu pourras dans ce cas y faire référence avec %2 Dan PS: si tes anciennes URLs ont toujours ces 2 caractères, tu pourras dans ce cas supprimer la dernière condition qui recherche "accueil" dans la query string.
Message populaire. mosaic40 Posté 2 Février 2010 Auteur Message populaire. Posté 2 Février 2010 (modifié) Re bonjour, RewriteCond %{REQUEST_URI} /([A-Z]{2})/ [NC] RewriteCond %{QUERY_STRING} !module=accueil RewriteRule .* http://www.monsite.com/index.php?module=accueil〈=%1 [R=301,L] ça marche, c'est à dire que : http://www.monsite.com/xx/index.php?lang=xx devient bien : http://www.monsite.com/index.php?module=accueil〈=xx mais cela provoque le non-affichage d'images, non pas celles contenues dans /images/, mais dans /images/sc/, et pas toutes !!! Cette anomalie n'est pas immédiatement consécutive à l'application de la règle par Apache. Pourtant, la source indique le bon chemin de ces images (c'est le ALT qui est affiché). Et j'ai bien vérifié que c'est la présence de cette règle dans le fichier htaccess qui provoque cela. Est-ce le fait que Apache peut avoir des comportements aléatoires ou non reproductibles, donc je dois virer cette règle parce qu'on est au bout des possibilités de Apache (pour les miennes, c'est déjà fait depuis longtemps) ou bien peut-on résoudre cela? Merci Modifié 2 Février 2010 par mosaic40 1
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant