[RESOLU] Besoin d'aide sur un regex

Petit nouveau ! | 5 Messages

25 mars 2015, 00:42

Bonjour,

je cherche à rediriger des urls qui remontent en erreurs dans webmasters/tools
Une grande partie d'entre elles ont un point commun :
elles se terminent toutes par un EAN13.html
(et en principe je n'aurai plus jamais d'url construites comme ça)
exemple :
3700256024641.html

je voudrais donc faire une redirection 301 du style
si contient 13chiffres.html redirection vers mahomepage.com
j'ai essayé :
RewriteRule (*.)^[0-9]{13}.html(.*) mahomepage.com? [L,R=301]

ainsi que 2-3 autres combinaisons mais ça ne fonctionne pas,
pouvez vous m'aider ?

merci bcp

Mammouth du PHP | 688 Messages

25 mars 2015, 02:27

RewriteRule (*.)/[0-9]{13}\.html$ mahomepage.com? [L,R=301]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 mars 2015, 12:46

Il y a une erreur dans l'expression régulière le * devrait être précédé d'un élément quantifiable : " .* ".

A noter que celui-ci n'a de toute façon pas d'intérêt, on peut limiter le masque à la fin de la chaîne sans se soucier du début.
Si le contrôle doit porter sur un format 13 chiffres + extension, "/[0-9]{13}\.html$/" est largement suffisant.

Nota : il existe plusieurs sites permettant de tester une expression régulière afin de valider que celle-ci est correctement écrite, ainsi que pour tester et vérifier le résultat qu'elle peut produire (ex: https://regex101.com/ pour n'en citer qu'un)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 1996 Messages

28 mars 2015, 01:31

Si cela n'est pas résolu, essayes :

RewriteRule ^(:?[0-9]{13})\.(:?html)$mahomepage.com? [L,R=301]
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 5 Messages

28 mars 2015, 16:19

Bonjour,

merci beaucoup pour vos retours, malheureusement ça ne fonctionne toujours pas, voila ce que j'ai essayé :

Celles qui ne fonctionnent pas
RewriteRule (.*)/[0-9]{13}\.html$ mahomepage.com? [L,R=301]
RewriteRule ^(:?[0-9]{13})\.(:?html)$ mahomepage.com? [L,R=301]
RewriteRule (.*)/[0-9]{13}\.html$(.*) mahomepage.com? [L,R=301]

Celles en Erreur 500 (tout le site)
RewriteRule (*.)/[0-9]{13}\.html$(.*) mahomepage.com? [L,R=301]
RewriteRule (*.)/[0-9]{13}\.html$ trajectoire-moto.com? [L,R=301]


si vous avez d'autres propositions je suis preneur sinon tant pis je reste avec mes 500 urls en erreur ;-)

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 mars 2015, 17:52

Bonjour,

Il existe un outil en ligne assez pratique pour tester ses règles d'url rewriting :
http://martinmelin.se/rewrite-rule-tester/

Si j'ai bien compris ta demande, la règle suivante devrait faire l'affaire :

Code : Tout sélectionner

RewriteRule ^[0-9]{13}.html http://trajectoire-moto.com [L,R=301]
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

29 mars 2015, 17:26

Bonjour @rthur,

j'ai essayé
RewriteRule ^[0-9]{13}.html http://trajectoire-moto.com [L,R=301]
ça ne fonctionne pas sur cette url à réécrire par exemple :
http://www.monsite.com/reference-3460530127207.html

merci pour les outils de test de regex je vais continuer à chercher

Mammouth du PHP | 688 Messages

29 mars 2015, 17:59

RewriteRule [0-9]{13}\.html$ http://trajectoire-moto.com [L,R=301]

Petit nouveau ! | 5 Messages

01 avr. 2015, 19:19

ça fonctionne !
merci bcp tof73