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

Fermé
AurelieLi Messages postés 80 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 20 juillet 2020 - 17 déc. 2018 à 22:37
AurelieLi Messages postés 80 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 20 juillet 2020 - 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
A voir également:

1 réponse

bartaba31 Messages postés 33 Date d'inscription mardi 18 décembre 2018 Statut Membre Dernière intervention 21 décembre 2018 11
18 déc. 2018 à 11:22
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/
0
AurelieLi Messages postés 80 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 20 juillet 2020
18 déc. 2018 à 14:18
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 !
0
bartaba31 Messages postés 33 Date d'inscription mardi 18 décembre 2018 Statut Membre Dernière intervention 21 décembre 2018 11
18 déc. 2018 à 14:31
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
0
AurelieLi Messages postés 80 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 20 juillet 2020
19 déc. 2018 à 12:02
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
0
AurelieLi Messages postés 80 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 20 juillet 2020
26 déc. 2018 à 17:58
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 !
0