Expressions régulières : mauvais renvois :-/ [Fermé]

Signaler
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020
-
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020
-
Bonjour,

Ma question porte sur les expressions régulières, dans le cadre d'un blog migré il y a 3 ans d'Over-blog (avec, à l'époque, 3 types d'adresses URL différents) vers Wordpress. J'avais été aidée avec succès à l'été 2016 sur ce forum programmation (pour renseigner ensuite le plugin redirection de Wordpress) mais j'ai dû réinstaller Wordpress en décembre puis reconfigurer les redirections fin avril (curieusement, des redirections qui ont marché ne marchent plus). Ma question semble trop avancée pour un webmaster / n'est pas en lien direct avec Wordpress.

Trois expressions régulières sont renseignées pour mon blog. Mais il y a une faille quelque part et je suis perdue... J'ai connaissance des sites pour tester les expressions mais ne les comprends pas tellement :-/

Les expressions utilisées :

\/(\w|\-)+\.html
/$1/

/(\d{4})/(\d{2})/(.*)\.html
/$1-$2-$3/

/(\d{4})/(\d{2})/(.*)\/
/$1-$2-$3/

Mon problème : je me retrouve avec ces interprétations :

- Cas 1

/2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudehore-la-forestiere.html/
/e// (le e du mot juste avant le point + un / après le html)
Ce qui existe : /2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho/

/2016-01-voyage-en-louisiane-la-nouvelle-orleans-cote-jardins-et-universite.html/
/e//
/2016-01-une-coupe-au-salon-coiffeur-de-paris-de-jordy-brechkoff.html/
/f//
/2015-03-le-bouffon-du-president-du-theatre-et-des-politiques.html/
/s// (le s du mot avant html)

- Cas 2

/article-the-a-la-menthe-ou-t-es-citron-50504411.html
/1/
/article-paris-sous-la-neige-de-solferino-aux-tuileries-41499862.html
/2/
Ce qui existe : /article-paris-sous-la-neige-de-solferino-aux-tuileries-41499862/

Historique des échanges que j'ai eus depuis 3 ans (pour info) :
https://forums.commentcamarche.net/forum/affich-33736206-difficultes-a-creer-des-expressions-regulieres#p33737978 (2016)
https://forums.commentcamarche.net/forum/affich-35756011-redirections-sous-wordpress-creation-d-expressions-regulieres
https://forums.commentcamarche.net/forum/affich-36039743-creation-d-expressions-regulieres-a-utiliser-avec-l-extension-redirection-de-wp

Merci beaucoup de votre aide !

Bonne journée :-)

Configuration: Windows / Chrome 74.0.3729.169

8 réponses

Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Bonjour
J'ai connaissance des sites pour tester les expressions mais ne les comprends pas tellement :-/


C'est pourtant pas très compliqué. Ils ont tous deux zones de saisie de texte:
  • une pour copier coller ton texte d'entrée
  • une pour écrire ta regex

Ensuite, ils présentent tous un résultat visuel des captures (souvent du surlignage), et des substitutions.

Il faut chercher un site adapté à ton langage, en effet, il peut y avoir des subtilité d'un langage à l'autre.
Par exemple, wordpress, c'est du PHP, il me semble. Et en PHP, la syntaxe est encadrée par / / comme les syntaxes que tu montres.

On va donc faire une regex de testeur PHP
https://www.qwant.com/?q=regex+tester+php&t=web

Et prendre le 2eme, parce que j'en ai déjà entendu parlé sur le forum
Si on y copie colle ton texte et ta première Regex cela donne ça https://regex101.com/r/0Sw4IV/1
Dans "test string", tout le texte est surligné en bleu, c'est la capture principale ($0), et le e juste avant le point de .html est en vert, c'est le 1er groupe ($1).
Si je teste tous tes liens du cas 1, on arrive au même résultat -> $1 est la dernière lettre avant .html.
Si je teste tous les liens du cas 2, on arrive au même résultat -> $1 est le dernier chiffre avant .html.


Ta seconde Regex présente un problème de syntaxe, les / intermédiaires ne lui plaisent pas, il sont surlignés en rouge dans "Regular Expression", et dans "Explenation" à droite on lit
/ An unescaped delimiter must be escaped with a backslash (\)

https://regex101.com/r/0Sw4IV/3

En échappant, comme demandé par le site, les 2 / cette regex ne capture rien
https://regex101.com/r/0Sw4IV/4

Quand à ta 3eme Regex, une fois corrigée de la même erreur, elle ne capture rien non plus
https://regex101.com/r/0Sw4IV/5


En 2016, je t'avais montré un exemple avec regexstorm.net, mais il est dédié à l'implémentation .Net (C#, VB.Net, ASP.Net C++.NET, J#, etc...)
Si j'essaye ta première Regex, j'obtiens un résultat un peu different.
$1 ne contient plus seulement le dernier caractère avant .html, mais chaque caractère séparé dans une sous-capture différente. Je ne sais pas si PHP gère les sous captures, en tout cas je n'ai pas trouvé si c'est possible sur regex101

C'est pourquoi, il est important de trouver un site de test qui fonctionne dans le langage dont tu as besoin.
Je n'ai pas été assez clair là dessus en 2016.


Pour ton problème d'aujourd'hui

/2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudehore-la-forestiere.html/
/e// (le e du mot juste avant le point + un / après le html)
Ce qui existe : /2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho/

Cela veut il dire, que tu veut capturer
2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho
?
Si oui la taille est-elle le critère pour tronquer le lien?

Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,

Merci beaucoup de cette réponse.

Si cela me semble complexe, c'est sans doute car je n'ai aucune notion sur le sujet à la base et tente d'apprendre au fil des problèmes rencontrés. J'ai peur de faire empirer les choses :-/

Sous Wordpress, dans Réglages/Permalien, j'ai simplement fait le choix du réglage "Titre de la publication" qui correspond à https://leblogdelili.fr/
Je ne vois pas d'endroit où indiquer le nombre de caractère maximal.

J'aimerais au moins que /2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudehore-la-forestiere.html/
devienne /2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudehore-la-forestiere/ (l'expression régulière qui permettrait ça fonctionnerait sur d'autres articles construits selon le même modèle et à l'URL plus courte à la base).
Pour avoir /2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho/, il me faudrait ajouter une redirection manuelle après ça.

L'adresse /2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho/ semble compter 70 caractères, ou 72 caractères en incluant les 2 /. Je vois 1 caractère de plus pour /article-une-journee-a-disneyland-pour-un-enterrement-de-vie-de-jeune-f/
Après, je peux toujours créer des redirections une par une à la main pour les URLs trop longues. J'en ai malheureusement fait déjà pas mal :-/ (mais il y avait déjà 1200 ou 1600 articles avant la migration).

Depuis que je suis sous Wordpress, je choisis mes adresses et, en regardant, certaines sont plus longues que ces 70/72 caractères. Je ne sais pas comment cette césure s'est opérée.


Avec ce jeu d'URLs, j'ai l'impression d'avoir créé un autre genre d'adresse.

J'ai des adresses de type
/une-journée-hyperparisienne-de-rêve-avec-zoomonparis
alors que la page est nommée
/une-journee-hyperparisienne-de-reve-avec-zoomonparis/

Bon après-midi
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Avec cette syntaxe
(\/[\w-]{1,70})[\w-]*\.html\/
, 3 exemples fonctionnent
https://regex101.com/r/1D8nEt/1

Pour l'accent circonflexe, je ne sais pas
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
c'est cette règle \/(\w|\-)+\.html qui te prend la dernière lettre.
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Aïe...

Avec les trois expressions que j'avais (qui seraient donc erronées toutes les trois), j'avais quand même des redirections qui marchaient :

Exemple 1 de ce qui marche

/2014/09/ou-bruncher-a-paris-43-la-boheme/
/2014-09-ou-bruncher-a-paris-43-la-boheme/
ou
/2016/03/one-man-show-maxime-gasteuil-a-le-plaisir-de-vivre-communicatif/
/2016-03-one-man-show-maxime-gasteuil-a-le-plaisir-de-vivre-communicatif/

Exemple 2 de ce qui marche

/2015/09/la-patisserie-des-reves-fete-ses-6-ans-le-gouter-de-la-rentree.html
/2015-09-la-patisserie-des-reves-fete-ses-6-ans-le-gouter-de-la-rentree/

==============

Les URLs commençant par "article" suivantes ne fonctionnent pas par exemple :

/article-escapade-jazz-112032675.html
/5/
ou
/article-le-salon-du-mariage-vu-par-une-celibataire-37952650.html
/0/
ou donc
/article-paris-sous-la-neige-de-solferino-aux-tuileries-41499862.html/
/2//

==============

Quand je désactive les trois règles pré-existantes et en mettant celle que vous avez trouvée :
(\/[\w-]{1,70})[\w-]*\.html\/
$1/
Cela fonctionne en effet bien pour retirer le html/ (une minorité d'adresses) avec les adresses qui ont des tirets :
/2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudehore-la-forestiere.html/
/2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho/
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Je suppose
  • que si une regex capture un truc, ça ne passe pas à la suivante
  • que wordpress n'interprète pas tout à fait la syntaxe des 2 qui semblent erronées par regex101.


Du coup, ce sont ces 2 là qui faisaient le boulot.

Pour tous les exemples que tu donnes
((?:\/\d{4}[-\/]\d{2})?\/[\w-]{1,70})[\w-]*(?:\.html)?\/?

https://regex101.com/r/1D8nEt/2
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Wahou, quelle formule ! Merci !

Je viens de changer la regex dans l'extension. Ca semble planter le blog. Si je tente de naviguer et clique sur un article, je vois "leblogdelili.fr vous a redirigé à de trop nombreuses reprises." :



Dans le journal des redirections, je vois par exemple ça plusieurs dizaines de fois en une minute :
/feed/
/feed/
de même pour :
/category/culture/spectacles/
/category/culture/spectacles/
ou
/tag/livre/page/4/
/tag/livre/page/4/
erreur aussi :
/article-mon-nouveau-carnet-x17-60462337/
/article-mon-nouveau-carnet-x17-60462337/

=================

En décembre dernier, quand je n'avais pas encore de html/ qui se promenaient dans mon extension de redirections, les trois types d'adresses que je trouvais étaient :

Cas de figure 1
URL qui se promène :
/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 :
/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 :
/2009/10/23/article-a-moi-new-york-38016983/
Bonne URL :
/article-a-moi-new-york-38016983/

Merci encore !
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

PS : curieux, j'ai un plantage de l'extension Google analytics depuis que j'ai fait ce dernier test ("Quelque chose s’est mal passé, vérifier Erreurs & débogage ou autoriser l’extension".) Même en le supprimant et en le réactivant, ça ne va pas :-/
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Le fait est que je ne connais pas du tout wordpress.
Je me suis contenter d’écrire une regex qui répond aux quelques exemples que tu as donnés.

Cependant, il est bien possible qu’elle provoque des effets de bord sur certains liens.

As tu la possibilité d’extraire tous tes liens dans un fichier et le mettre sur cjoint.
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

En dehors de la table "links" de la base de données, je ne vois pas comment extraire les liens. Je ne sais à vrai dire pas si cela répond à la question ?

J'essaie de voir en parallèle comment arranger cette histoire d'Analytics planté. Ça me gêne finalement plus que les 404 restantes ;-)
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour, précision utile du matin : le problème Google Analytics est résolu :-)
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour de nouveau, j'ai essayé de faire le récap' de tous les types de liens et les redirections qui ont ou avaient été mises en place :


Cas de figure 1 idéntifié en décembre

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

Ce qui a été créé :
\/(\w|\-)+\.html
/$1/

Cas de figure 2 identifié en décembre

URL qui se promène :
/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/

/(\d{4})/(\d{2})/(.*)\.html
/$1-$2-$3/

Cas de figure 3

URL ancienne :
/2015/11/le-bistrot-valois-la-cuisine-francaise-a-l-honneur.html
Bonne URL :
/2015-11-le-bistrot-valois-la-cuisine-francaise-a-l-honneur/

/(\d{4})/(\d{2})/(.*)\/
/$1-$2-$3/

Cas de figure 4 identifié en décembre

URL qui se promène :
/2009/10/23/article-a-moi-new-york-38016983/
Bonne URL :
/article-a-moi-new-york-38016983/

Pas de règle créée

Cas de figure 5

/2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudehore-la-forestiere.html/
Bonne URL - tronquée (mais toutes les adresses ne sont pas strictement tronquées au même nombre de chiffres donc ne pas se concentrer sur le raccourcissement sans doute)
/2014-11-gouts-d-yvelines-2-2-mon-dejeuner-au-relais-chateaux-cazaudeho/

Cette redirection fonctionne uniquement si les premières sont désactivées :
\/[\w-]{1,70})[\w-]*\.html\/ (70 ne semble pas être une règle à 100%)
$1/

Cas de figure qui découle d'une règle inexacte

/article-paris-sous-la-neige-de-solferino-aux-tuileries-41499862.html/
/2//
ou
/article-paris-sous-la-neige-de-solferino-aux-tuileries-41499862.html
/2/
Ce qui existe : /article-paris-sous-la-neige-de-solferino-aux-tuileries-41499862/

Bonne journée !
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Bonjour
Tant mieux pour tes stats.
Je vais déplacer le sujet dans le forum wordpress.
Peut-être que quelqu’un sait comment les directions fonctionnent.

D’un autre côté, si tu arrives à extraire la table links vers un csv, un ficher excel etc... je suis toujours preneur.
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Je cherche à écrire une regex qui marcherait pour toutes tes redirections.


Bon mariage
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Top :-)
Merci et bon week-end !
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,

J'espère ne pas vous avoir noyé sous un problème insoluble...

Mes erreurs 404 cette semaine sont beaucoup sur ce modèle :
/2014/10/tous-au-restaurant-un-diner-a-la-brasserie-julien
/2015/12/fetez-noel-2015-avec-la-patisserie-des-reves
Sans doute à cause de :
/(.*).html
/$1
(qui marche sur pas mal d'autres cas pourtant...).

Bonne journée et à bientôt !
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Bonsoir

non, c'est mon boulot et ma vie perso qui me noient de choses à faire.
Je n'ai pas pris le temps de regarder ton problème cette semaine.
Peut-être ce soir, ou demain.
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,
Pas de problème :-)
Pour limiter les 404, je viens de tester l'ajout de la regex suivante :
/(\d{4})/(\d{2})/(.*) (type d'adresse généré par une autre regex...)
/$1-$2-$3
Elle marche sur les URLs pas trop longues, cela pourra dépanner :-)
J'aurai peu d'accès à un ordinateur jusqu'à demain samedi en soirée.
Bonne journée :-)
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Je viens de t'envoyer par MP, un nouveau fichier réduit, il y a 18885 liens différents.

Avec cette regex
\/(\d{4})\/(\d{2})\/([^.]{1,62}).+
et ça en remplacement
/$1-$2-$3/

Il y a 246 captures de ce type

/2015/12/pe-gase-icare-le-spectacle-du-cirque-alexis-gruss.html
/2015/12/pe-gase-icare-le-spectacle-du-cirque-alexis-gruss/
/2016/06/un-afterwork-autour-du-cafe-lavazza-au-village-de-roland-garros.html
/2016/06/degustabox-le-coffret-culinaire-surprise-de-mai-2016/
/2016/03/maris-et-femmes-un-peu-de-woody-allen-sur-la-scene-du-theatre-de-paris/
/2016/03/maris-et-femmes-un-peu-de-woody-allen-sur-la-scene-du-theatre-de-paris.html

qui donnent une redirection de ce type

/2015-12-pe-gase-icare-le-spectacle-du-cirque-alexis-gruss/
/2015-12-pe-gase-icare-le-spectacle-du-cirque-alexis-gruss/
/2016-06-un-afterwork-autour-du-cafe-lavazza-au-village-de-roland-garro/
/2016-06-degustabox-le-coffret-culinaire-surprise-de-mai-2016/
/2016-03-maris-et-femmes-un-peu-de-woody-allen-sur-la-scene-du-theatre-/
/2016-03-maris-et-femmes-un-peu-de-woody-allen-sur-la-scene-du-theatre-/


Cette regex (à appliquer en second, car elles capture aussi les précédents, mais ne traite pas les / entre l'année, le moi et le texte)
/([^.]{1,70}).+
et ce remplacement
/$1/
capture 1634 liens pour en faire des redirections comme cela

/ll-hellocoton/
/apple-app-site-associatio/
/article-mozart-opera-rock-une-comedie-musicale-fran-aise-efficace-6256/
/suivez-le-blog-de-lili-sur-les-reseaux-sociaux-twitter-facebook-instag/
/2015-11-cocktails-et-burgers-a-l-honneur-au-pub-saint-michel/
/2015-01-carnet-de-voyage-six-idees-de-visite-a-porto/nul/
/apple-touch-icon/
/apple-touch-icon-precomposed/
/apple-touch-icon-152x152/
/apple-touch-icon-152x152-precomposed/
/2014-09-le-chateau-de-vaux-le-vicomte-de-jour-et-de-nuit-aux-chandelle/
//2014-09-le-chateau-de-vaux-le-vicomte-de-jour-et-de-nuit-aux-chandell/
/2015-06-le-pas-sage-esprit-bistrot-et-plats-colores-dans-un-passage-pa/
/article-amsterdam-gourmand-quelques-adresses-sur-place-ou-a-emporter-8/
/article-amsterdam-gourmand-bagels-beans-pour-le-the-et-le-petit-dejeun/
/templates/system/css/system/
/admin/images/cal_date_over/
/2016-05-un-the-dans-le-jardin-le-salon-de-the-plein-de-charme-du-musee/
/2014-12-deux-belles-expos-a-paris-sonia-delaunay-au-mam-et-garry-winog/


Les 5 lignes qui ne sont pas capturés sont

/.com.old
/.asp.bak
/...nvers-restaus-hotel/
/.well-known/
/\"

Qui sont je pense des erreurs d'extraction de ton gros gros fichier.

Essaye ces 2 regex, dans l'ordre et dis moi ce que ça donne.

Bon week-end


PS: j'ai pas réussi à n'en faire qu'une à cause des remplacements
/$1-$2-$3/
donne
/--/
quand la 2eme regex capture la ligne...
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,

Merci beaucoup !

J'ai entré l'une des regex puis ai ajouté l'autre mais seule la 2e semble fonctionner une fois dans le plugin Redirection car j'ai eu une nouvelle fois le message qui indique qu'il y a trop de redirections...




J'ai, du coup, réactivé pour le moment :

/(.*).html
/$1

/(\d{4})/(\d{2})/(.*)\/
/$1-$2-$3

/(\d{4})/(\d{2})/(.*)
/$1-$2-$3
== J'ai moins de 404 depuis cet ajout hier matin tôt, même s'il en reste.

Je vais regarder pour l'envoi du fichier mais, comme je l'évoquais, je ne suis pas sûre de savoir faire ce remplacement. Personne ne saurait m'aider si je faisais une mauvaise manip dans ma base de données...

Bonne soirée !
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Ha oui, on avait vu que le \/ ne marche pas dans ton blog, alors que regex101.com le demande (à noter que regexstorm s'en fout)

Essaye donc cela en 1
/(\d{4})/(\d{2})/([^.]{1,62}).+
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Merci. J'ai laissé les deux expressions 30 minutes et ai presque cru que c'était bon (la regex a traité deux redirections) mais ai vu, une prenant mon portable : "Safari ne peut pas ouvrir la page car il y a eu trop de redirections"...

Ceci dit, ça me dit qu'il y a 909 vues de la regex :
/([^.]{1,70}).+
/$1/
Ca laisse penser que c'est beaucoup trop ;-)
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Bonjour,

il est bien possible que ma méconnaissance (et c'est peu dire) de wordpress soit à la manoeuvre.

J'ai bêtement cherché à écrire 1, puis 2 regex qui couvriraient 100% de tes adresses, y compris celles qui n'ont pas besoin d'être redirigées....

Je vais donc essayer l'inverser, ne capturer que les liens ayant besoin d'être redirigés.
A brûle pourpoint, je pense qu'il faudra 2 ou 4 regex pour remplacer les 2 que je t'ai proposées.

Mais en parallèle, pour limiter de prochaines erreurs je vais me documenter un peu sur les redirection wordpress. Est-ce l'extension décrite là https://wpmarmite.com/redirection-wordpress/ que tu utilises?


Je n'aurais pas le temps de m'y atteler dans la journée.
Peut-être ce soir.

Bonne journée.
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,

Merci. Wordpress et ses extensions sont tout un monde dirait-on...

J'utilise "Redirection" : https://fr.wordpress.org/plugins/redirection/

Je n'avais pas pris conscience avant nos derniers échanges qu'il y avait une sorte de priorité selon l'ordre dans lequel on ajoutait les regex. J'ai remis une formule qui semblait ne plus marcher en premier et cela semble l'avoir rendue de nouveau opérante.

En dehors des très nombreuses exceptions que j'ai déjà renseignées, celles qui sont en ce moment activées, de la plus récente à la plus ancienne :

/(\d{4})/(\d{2})/(.*)
/$1-$2-$3
300 fois (nombre d'utilisations hier en fin de soirée)
329 fois (nombre d'utilisations ce matin)

/(.*).html
/$1

/(\d{4})/(\d{2})/(.*)\/
/$1-$2-$3/
651 fois
669 fois

/(\d{4})/(\d{2})/(.*)\.html
/$1-$2-$3/
23 400 fois
23470 fois

Depuis hier soir, les erreurs 404 semblent porter plutôt sur les adresses longues, les adresses avec accents ou toujours des choses désinstallées (fichiers liés à mes anciennes newsletters, etc. : il ne faut sans doute pas s'en occuper).

Il faut que je continue à me documenter sur les différents problèmes Wordpress car une chute de 40 à 50% en un mois reste assez troublante... Mystère mystère.

Bonne journée et encore merci !
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Je n'avais pas pris conscience avant nos derniers échanges qu'il y avait une sorte de priorité selon l'ordre dans lequel on ajoutait les regex. J'ai remis une formule qui semblait ne plus marcher en premier et cela semble l'avoir rendue de nouveau opérante.


Cela semble assez logique, du point de vue du "programmeur", si le lien est intercepté par une regex il est traité par celle-ci et ne passe pas à la suivante.

du coup /(\d{4})/(\d{2})/(.*) intercepte tout ce qui serait pris par /(\d{4})/(\d{2})/(.*)\.html
la partie commune (la première regex entière), veut dire
  • un /
  • 4 chiffres
  • un /
  • 2 chiffres
  • n'importe quel caractère, un nombre de fois indéterminée


la 2eme regex, ajoute
  • .html à la fin


Si un lien finit par .html il est intercepté par la première regex, dans ce cas, le .html est conservé, or il faut l'enlever.
Mettre /(\d{4})/(\d{2})/(.*) avant /(\d{4})/(\d{2})/(.*)\.html bloque de fait la seconde.

En plus, il semble acquis (j'ai fait quelques tests à la main sur ton blog, et ma femme a trouvé ça louche que je visite un site de ce genre ;) ), que le lien final ne doit pas faire plus de 70 caractères, or ces 2 regex ne prennent pas ça en compte.

Bref, j'essaye de m'y remettre en soirée.
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

En effet, cela semble logique. Parfois, quand on ne connaît pas bien quelque chose, on en perdrait presque le bon sens !

L'anecdote sur ta femme m'a fait rire ;-)

Seulement pour info, sur Google Search Console, j'ai vu un graphique qui correspond aux pages exclues à cause des redirections, qui passe de 3500 à 6150 pages à la date à partir de laquelle les consultations ont commencé à plonger.



Bon début de soirée
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Alors en premier position, je te propose
/(\d{4})/(\d{2})/([^./]{1,62}).*
et
/$1-$2-$3/

Comme le montre cet exemple (clique sur Contexte pour voir le remplacement), elle intercepte les liens qui
  • commencent par 4 chiffres / 2 chiffres /
  • puis jusqu'à 62 caractères saut le . (pour s'arrêter avant .html) ou / (pour éviter d'en avoir 2 à la fin du lien redirigé)
  • finit par n'importe quoi.


en 2eme position, les lien de moins de 70 caractères finissant par .html
/([^./]{1,69})\.html
et
/$1/

exemple

et en 3eme position les liens de plus de 70 caractère (peut importe la fin, sauf si le 71eme caractère est /)
/([^./]{70})[^/]+
et
/$1/

exemple
Cette fois, dans l'onglet Context, le saut de ligne des lignes interceptées est supprimée, mais ça ne devrait pas avoir d'influence pour toi, puisque dans un lien, y a pas de saut de ligne.
Au cas où, voici dans ce dernier exemple, la même qui prend en compte le saut de ligne

Par contre, gérer les accents ça se complique, car n'importe lequel des cas traiter par l'une des 3 regex peut contenir un accent, et n'importe où en plus
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,

J'espère que tu vas bien :-)

Sur la base de ce que tu as déjà créé, je teste :

/index.php/(\d{4})/(\d{2})/(\d{2})/([^./]{1,62}).*
/$4/

Pour le moment, ça semble marcher (youpi !!) :
http://regexstorm.net/tester?p=%28%3F%3A%2Findex%5C.php%29%3F%2F%28%5Cd%7B4%7D%29%5B%2F-%5D%28%5Cd%7B2%7D%29%5B%2F-%5D%28%3F%3A%5Cd%7B2%2C4%7D%5B%2F-%5D%29%2A%28%5B%5E.%2F%5D%7B1%2C62%7D%29%5B%5E%2F%5Cr%5D%2A%2F%3F&i=%2F2014%2F09%2Fredecouvrir-le-chateau-de-versailles.html%0D%0A%2F2015%2F01%2Fse-regaler-a-porto-mes-bonnes-adresses-food-portugaises.html%0D%0A%2Findex.php%2F2015%2F11%2F11%2F2015-11-l-autre-the-pres-de-150-references-pour-les-amateurs-de-the%2F%0D%0A%2Findex.php%2F2013%2F05%2F29%2Fpremier-gouter-chez-ten-belles%2F%0D%0A%2F2015%2F06%2Fles-chocolatiers-et-patissiers-de-la-rue-du-bac-nous-font-passer-le-bac-sucre.html%0D%0A%2F2015-11-la-comedie-musicale-familiale-le-voyage-extraordinaire-de-jules-verne-au-theatre-mogador%0D%0A%2Findex.php%2F2014%2F10%2F09%2F2014-10-food-beaute-deco-et-cadeaux-monoprix-prepare-noel-2014%2F&r=%2F%241-%242-%243%2F

Ce qui m'a servi d'exemples :
/index.php/2014/12/14/2014-12-ma-journee-paris-en-amoureux-parisjetaime/
/2014-12-ma-journee-paris-en-amoureux-parisjetaime/
et
/index.php/2013/05/29/premier-gouter-chez-ten-belles/
/premier-gouter-chez-ten-belles/

Au départ, j'avais essayé avec deux regex, dont la suivante. Elle marchait pour l'un des types d'adresses mais empêchait l'autre de fonctionner.
/index.php/(\d{4})/(\d{2})/(\d{2})/(\d{4})-(\d{2})-([^./]{1,62}).*
/$4-$5-$6/

À suivre (au fil de la journée...) mais, si ça se trouve, tout va bien ;-)

Bonne journée !!
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
Bonjour
J’ai pas touché terre ces 2 derniers jours.
Mais si tu t’en sors seule c’est parfait.
Bonne journée
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Bonjour,

"Seule", c'est beaucoup dire mais j'ai réussi à décliner ce que tu avais déjà formulé :-)

Cette fois, avec quelques jours de recul, toutes les adresses qui contiennent des articles semblent être bien redirigées. Youhou !

Les regex en place :

/index.php/(\d{4})/(\d{2})/(\d{2})/([^./]{1,62}).*
/$4/

/(\d{4})/(\d{2})/([^./]{1,62}).*
/$1-$2-$3/

/([^./]{1,70}).*\.html?
/$1/

/(\d{4}-\d{2}-[^./]{62})[^/]+
/$1/

/(article-[^./]{62})[^/]+
/$1/

Encore un grand merci pour tout !

Bonne semaine !
Messages postés
14611
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 août 2020
562
De rien, n’hésite pas si tu as de nouveau besoin.
Bonne journée
Messages postés
80
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
20 juillet 2020

Merci, c'est très gentil :-)