philippe64 Posté 4 Décembre 2007 Posté 4 Décembre 2007 Mon problème est sûrement très simple à résoudre, mais je n'y arrive pas... Suite à une modification de nommage d'un grand nombre de fichiers sur un site, et ne voulant pas perdre l'ancien référencement, je souhaite établir une règle de réécriture pour rediriger les moteurs de recherche vers les nouvelles URL. Certains noms de fichiers pouvait contenir des majuscules, le nouveau nom est entièrement en minuscules. Exemple : Merci-Pour-Votre-Aide.html --> merci-pour-votre-aide.html Comment faire
philippe64 Posté 4 Décembre 2007 Auteur Posté 4 Décembre 2007 Pour l'instant pas grand chose car je ne sais pas comment faire... Sinon, je pense que ça va être un truc du genre : RewriteEngine on RewriteRule ^(.*).html$ $1.htm [R=301] Je sais que cette règle ne change rien, je voudrais juste savoir comment lui dire de convertir $1 en minuscules.
philippe64 Posté 4 Décembre 2007 Auteur Posté 4 Décembre 2007 j'ai trouvé ceci, mais ça marche pas... RewriteEngine onRewriteMap lowercase int:tolowerRewriteRule ^(.*).html$ ${lowercase:$1}.html [R=301,L]
philippe64 Posté 4 Décembre 2007 Auteur Posté 4 Décembre 2007 (modifié) J'ai eu une autre idée à force de chercher, mais c'est pas encore ça... RewriteEngine onRewriteRule ^([A-Z]+.*)\.html$ \L$1\E.html [L] ^([A-Z]+.*)\.html$ --> verifie que le premier caractère est une majuscule et que la chaine se termine par .html \L$1\E.html --> pourquoi \L...\E ne fonctionne pas ? (censé passé en minuscule, non ?) Modifié 4 Décembre 2007 par philippe64
Dan Posté 4 Décembre 2007 Posté 4 Décembre 2007 j'ai trouvé ceci, mais ça marche pas... RewriteEngine onRewriteMap lowercase int:tolowerRewriteRule ^(.*).html$ ${lowercase:$1}.html [R=301,L] Et ceci ? RewriteEngine onRewriteMap lowercase int:tolowerRewriteCond $1 [A-Z]RewriteRule (.*)\.html$ ${lowercase:$1}.html [R=301,L] Cela a l'avantage de ne faire de redirection que si l'URL comprend au moins une majuscule... sinon, bonjour le contenu dupliqué !
philippe64 Posté 4 Décembre 2007 Auteur Posté 4 Décembre 2007 non, ça marche pas... J'ai même plus accès au dossier Internal Server ErrorThe server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator, webmaster_AT_XXXXXXXX.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.More information about this error may be available in the server error log.
Dan Posté 4 Décembre 2007 Posté 4 Décembre 2007 Pourtant cette règle marche sur mon serveur. Qui est ton hébergeur ?
philippe64 Posté 5 Décembre 2007 Auteur Posté 5 Décembre 2007 J'ai toujours pas trouvé... j'ai envoyé un mail à mon hébergeur pour savoir si on peut utiliser RewriteMap dans le htaccess. J'attend sa réponse
philippe64 Posté 5 Décembre 2007 Auteur Posté 5 Décembre 2007 Est-ce que quelqu'un sait si l'utilisation de "RewriteMap" nécessite un paramétrage spécial du serveur ? Je précise que mod_rewrite est bien actif et que je n'ai pas d'autres soucis avec l'URL Rewriting. J'ai eu la réponse de la personne qui gère mon hébergement, mais il ne sait pas.
Dan Posté 5 Décembre 2007 Posté 5 Décembre 2007 Est-ce que quelqu'un sait si l'utilisation de "RewriteMap" nécessite un paramétrage spécial du serveur ? Je précise que mod_rewrite est bien actif et que je n'ai pas d'autres soucis avec l'URL Rewriting. J'ai eu la réponse de la personne qui gère mon hébergement, mais il ne sait pas. Et bien, pour quelqu'un qui "gère un hébergement" il ne semble pas très doué RewriteMap demande mod_rewrite tout simplement ! Donc si la réécriture fonctionne, RewriteMap doit fonctionner aussi. Donne-nous une règle qui fonctionne dans ton .htaccess... cela permettra de définir d'éventuelles particularités de mod_rewrite chez cet hébergeur. Copie précisément une règle... sans la modifier. Dan
philippe64 Posté 5 Décembre 2007 Auteur Posté 5 Décembre 2007 alors... voici une règle créée et testée pour l'occasion (qui fonctionne): RewriteEngine onRewriteRule ^solution-([a-z])\.html$ solution.php?p=$1 [L] par exemple, si on tape solution-abcde.html, ça va bien chercher solution.php?p="abcde"
philippe64 Posté 6 Décembre 2007 Auteur Posté 6 Décembre 2007 J'avais également lancé un topic équivalent sur webrankinfo J'ai fini par trouver une solution qui fonctionne nickel : voici le .htaccess RewriteEngine on RewriteRule ^[A-Z]+.*\.html$ lowercase.php [L] (il teste si la première lettre est une majuscule et si c'est le cas renvoie vers lowercase.php Voici le fichier lowercase.php <?php // prend l'uri puis la converti en minuscule $uri = $_SERVER['REQUEST_URI']; $uri_lc = strtolower($uri); // la page est redirigée (+deplacée permanente) header("Location: http://".$_SERVER['HTTP_HOST'].$uri_lc,TRUE,301); ?>
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant