Aller au contenu

Sujets conseillés

Posté

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 :?:

Posté

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.

Posté

j'ai trouvé ceci, mais ça marche pas...

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteRule ^(.*).html$ ${lowercase:$1}.html [R=301,L]

Posté (modifié)

J'ai eu une autre idée à force de chercher, mais c'est pas encore ça...

RewriteEngine on
RewriteRule ^([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é par philippe64
Posté
j'ai trouvé ceci, mais ça marche pas...

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteRule ^(.*).html$ ${lowercase:$1}.html [R=301,L]

Et ceci ?

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteCond $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é !

Posté

non, ça marche pas... J'ai même plus accès au dossier

Internal Server Error

The 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.

Posté

Pourtant cette règle marche sur mon serveur.

Qui est ton hébergeur ?

Posté

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

Posté

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.

Posté
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é :P

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

Posté

alors... voici une règle créée et testée pour l'occasion (qui fonctionne):

RewriteEngine on

RewriteRule ^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"

Posté

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);
?>

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...