Menu

Redirections sous Wordpress : création d'expressions régulières

Messages postés
78
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2019
- - Dernière réponse : AurelieLi
Messages postés
78
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2019
- 26 déc. 2018 à 17:58
Bonjour,

J'étais venue faire part, il y a deux ans et demi de difficultés à créer des expressions régulières dans le cadre d'une migration de blog.

A l'époque, la formule qui m'avait sauvée était :

/(\d{4})/(\d{2})/(.*)\.html
/$1-$2-$3
(leblogdelili.fr)
Elle ne semble plus être celle qui fonctionne désormais...

J'ai dû réinstaller mon Wordpress et faire du ménage dans ma base de données. La problématique a changé et j'ai toujours autant de mal à trouver la bonne règle régulière...

Cas de figure 1

URL qui se promène encore :
/article-dark-shadows-embarquez-pour-collinswood-105373457.html
Bonne URL :
/article-dark-shadows-embarquez-pour-collinswood-105373457/

Cas de figure 2

URL qui se promène encore :
/2015/01/se-regaler-a-porto-mes-bonnes-adresses-food-portugaises.html
Bonne URL :
/2015-01-se-regaler-a-porto-mes-bonnes-adresses-food-portugaises/

Cas de figure 3
URL qui se promène encore :
/2009/10/23/article-a-moi-new-york-38016983/
Bonne URL :
/article-a-moi-new-york-38016983/
Pour celui-ci, je teste (je crois sans succès) :
(.*).html
/$1/

Mille mercis par avance de votre aide !

Bonne soirée !

Configuration: Windows / Chrome 70.0.3538.110
Afficher la suite 

1 réponse

Messages postés
33
Date d'inscription
mardi 18 décembre 2018
Statut
Membre
Dernière intervention
21 décembre 2018
3
0
Merci
Hello,

En gros ton expression :
/(\d{4})/(\d{2})/(.*)\.html
\d c'est tous les nombres
{4} c'est 4 fois
Et les parenthèses permettent de le récupérer dans la variable $1

Donc si tu veux récupérer ça :
/article-dark-shadows-embarquez-pour-collinswood-105373457.html
/(\w+)/\.html
En ça :
/article-dark-shadows-embarquez-pour-collinswood-105373457/
/$1/

Un site qui peux t'aider à tester tes expressions : https://regex101.com/
AurelieLi
Messages postés
78
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2019
-
Bonjour,

Merci de cette réponse.

C'est fou que ce soit si compliqué sur le web de trouver l'explication de base pour tout ça, j'ai vraiment beaucoup de mal à comprendre comment bâtir ces expressions... J'ai déjà créé dans les 150 redirections au cas par cas mais je crois que j'avais migré 1600 articles, je n'ai pas fini ;-)

Quand je mets /(\w+)/\.html sous https://regex101.com/, il me dit donc : "Your pattern contains one or more errors, please see the explanation section above. / An unescaped delimiter must be escaped with a backslash (\) / An unescaped delimiter must be escaped with a backslash (\)..."

Je continue désespérément de chercher un site qui explique les bases de tout ça...

Bon après-midi !
bartaba31
Messages postés
33
Date d'inscription
mardi 18 décembre 2018
Statut
Membre
Dernière intervention
21 décembre 2018
3 -
Hello,

En fait sur le site, les / ne sont pas interprété. Essaie avec \/(\w|\-)+\.html
Tu peux voir sur le site que le / de départ est déja en tout début d'expression.
En fait le \ permet d'échapper le caractère qui suit.
Si tu met / alors le système va croire que l'expression commence ici
Si tu met \/ alors le système va comprendre que tu recherches un /
Le \w permet de chercher un caractère alphabétique
Le \- permet de chercher un tiret
Donc le \w|\- permet de chercher une lettre ou un tiret dans le texte.
Le + permet de dire "Une ou plusieurs fois"
Enfin les parenthèses permettent de récupérer ce texte dans la valeur $1
L'expression en la lisant est donc : Recherche tout ce qui commence par une lettre ou un tiret, une ou plusieurs fois, puis un point puis html
On met \. pour "échapper" le point car en expression régulière celui-ci désigne n'importe quel caractère.
A ta dispo si tu as des questions
AurelieLi
Messages postés
78
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2019
-
Bonjour,

Merci, je fais des tests. J'en ai cauchemardé cette nuit de toutes ces erreurs ;-)

Ton message d'hier m'a permis de corriger l'expression qui ne fonctionnait plus mais m'avait dépannée en 2016.
Fonctionne bien désormais (c'était le "cas de figure 1") :
/(\d{4})/(\d{2})/(.*)\.html
/$1-$2-$3\/
===> Youhou !

J'ai aussi indiqué :
\/(\w|\-)+\.html
/$1/
===> J'ai l'impression que la règle a été utilisée une fois. Je me rends compte que je devrais peut-être mettre /$1\/ plutôt...

J'espère que cela n'a rien à voir mais l'accès à mon blog et son back-office ont été moins rapides après ça.

Je surveille si les redirections sont bien employées par le plugin et s'il reste des soucis. Si tout finit par s'arranger, je viendrais clore la discussion.

Bonne journée
AurelieLi
Messages postés
78
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2019
-
Bonjour,
Eureka, tout fonctionne !
Je teste, pour finaliser, une 3e regex :
url source: \/article-(.*)-(d*).html
url cible: \/$1\/
(Pour les très vieux articles over-blog, qui avaient une structure différente).
Bonnes fêtes !
Commenter la réponse de bartaba31