Menu

Expressions régulières : mauvais renvois :-/

Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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://www.commentcamarche.net/forum/affich-33736206-difficultes-a-creer-des-expressions-regulieres#p33737978 (2016)
https://www.commentcamarche.net/forum/affich-35756011-redirections-sous-wordpress-creation-d-expressions-regulieres
https://www.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
Afficher la suite 

8 réponses

Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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?

AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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/exemple-article/
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
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
c'est cette règle \/(\w|\-)+\.html qui te prend la dernière lettre.
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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/
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
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
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 !
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 :-/
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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.
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 ;-)
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
Bonjour, précision utile du matin : le problème Google Analytics est résolu :-)
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 !
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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.
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
Je cherche à écrire une regex qui marcherait pour toutes tes redirections.


Bon mariage
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
Top :-)
Merci et bon week-end !
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 !
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
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.
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 :-)
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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...
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 !
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
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}).+
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 ;-)
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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.
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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 !
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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.
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
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
Commenter la réponse de Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
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
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
Oui, c'est vrai...

Petit point après quelques heures de recul (je ne serai pas proche de mon PC demain & vendredi) :

1/ Je crois que j'ai vu ce qui donnait les étranges adresses de type /2015-11-11/.

Dans le journal des redirections, je vois par exemple :

/index.php/2015/11/11/2015-11-l-autre-the-pres-de-150-references-pour-les-amateurs-de-the/
/index.php/2015-11-11/
==> En 404, ça apparaît comme /2015-11-11/

2/ Dans le journal des redirections :

/2014/01/promenades-hivernales-à -troyes-la-maison-du-dauphin-la-cathédrale-le-musée-d-art-moderne
devient
/2014-01-promenades-hivernales-Ã -troyes-la-maison-du-dauphin-la-cath/
au lieu de
/2014-01-promenades-hivernales-a-troyes-la-maison-du-dauphin-la-cathedr/ (adresse en ligne)

/2014/02/le-nouvel-an-chinois-2014-à-paris-le-défilé-au-départ-de-l-hôtel-de-ville.html
devient
/2014-02-le-nouvel-an-chinois-2014-à-paris-le-défilé-au-départ-de-l/
au lieu de
/2014-02-le-nouvel-an-chinois-2014-a-paris-le-defile-au-depart-de-l-hot/

==> A surveiller mais ce problème de découpage n'intervient peut-être que sur les adresses qui contenaient des accents. Du coup, ce serait du manuel.

3/ Je vois une redirection curieuse (un l après le /) dans le journal:
/article-the-a-la-menthe-ou-t-es-citron-50504411.html
/article-the-a-la-menthe-ou-t-es-citron-50504411/l
Le truc intrigant ? Quand on clique sur l'adresse redirigée, on arrive sur un article qui n'a rien à voir ;-) Cela dit, ces dernières semaines, je crois que j'avais remarqué la même chose sur la page page donc ça pourrait être un cas isolé.

==> J'édite mon message. Je vois aussi ça depuis :
/article-19642175.html
/article-19642175/l

/2013-10-le-soldat-rose-un-joli-spectacle-musical-pour-toute-la-famille.html/
/2013-10-le-soldat-rose-un-joli-spectacle-musical-pour-toute-la-famille//

/2014-09-une-journee-au-parc-asterix-2-2-a-la-rencontre-des-grecs-des-romains-des-vikings-cie/
/2014-09-une-journee-au-parc-asterix-2-2-a-la-rencontre-des-grecs-des-r//

Les regex pour mémo :

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

Bonne soirée !
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
Les accents, et généralement les diacritiques, je pense qu'il va te falloir les faire manuellement, actuellement la regex s'active sur la date et ne traite pas les accents.
Je peut écrire une regex qui gère la date, 1 à, 2 é et un ô, mais si une autre adresse contient la date 1 à, 2 é et un è, elle ne sera pas prise en compte.
Si la regex s'applique à un seul lien, ça ne sert à rien d'avoir une regex.

Par contre, si on pouvait appliquer plusieurs règles à un lien alors, on pourrait gérer les diacritiques, les un après les autres et après passer les autres règles de redirection.

En plus un diacritique c'est codé en 2 fois (donc interprété comme 2 caractères) la lettre de base et le signe distinctif.

Je suis désolé mais pour ça j'abdique, d'un autre coté, c'est incompréhensible pour moi qu'il y ait eu des diacritiques c'est une des rares interdictions fermes de la programmation => on ne met pas d'accents etc.. dans les noms de variable, de fichiers, de dossiers et autre liens url....


/article-the-a-la-menthe-ou-t-es-citron-50504411.html
/article-the-a-la-menthe-ou-t-es-citron-50504411/l

Et oui, encore imperfection de ma part,
remplace
/([^./]{1,70}).*\.htm
par
/([^./]{1,70}).*\.html?
, il faut lui dire que le l peut être présent une fois ou pas.
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
Merci de tes explications.

"À l'impossible, nul n'est tenu" : faire les redirections à la main pour les cas tordus et les accents est normal. Tu as le tableau global et je te remercie mille fois de ton aide !

Je pense qu'over-blog est, sur certains points, assez fort en mauvaises pratiques. Les accents dans les URLs sans possibilité de les éditer, c'est en effet plus que troublant :-/

J'ai modifié la regex :-)

Bonne soirée !
Whismeril
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346 -
pour ça
/index.php/2015/11/11/2015-11-l-autre-the-pres-de-150-references-pour-les-amateurs-de-the/
/index.php/2015-11-11/


la regex fait "ce travail" après 4 chiffres, un / 2 chiffres et un slash, prend à concurrence de 62 caractères tout ce qui n'est ni . ni / donc forcément elle s'arrête après le 11.

As tu beaucoup de pages à ce format?
AurelieLi
Messages postés
69
Date d'inscription
vendredi 15 avril 2016
Statut
Membre
Dernière intervention
19 juin 2019
-
Cela concerne, sur une semaine, 222 redirections de pages (il peut y avoir des doublons) de type :

/index.php/2015/11/11/2015-11-l-autre-the-pres-de-150-references-pour-les-amateurs-de-the/
/index.php/2015-11-11/
vraie adresse :
https://leblogdelili.fr/2015-11-l-autre-the-pres-de-150-references-pour-les-amateurs-de-the/

/index.php/2014/01/26/2014-01-ou-bruncher-a-paris-36-le-bang-et-ses-variations-autour-des-bu/
/index.php/2014-01-26/
vraie adresse :
https://leblogdelili.fr/2014-01-ou-bruncher-a-paris-36-le-bang-et-ses-variations-autour-des-bu/

/index.php/2011/04/07/article-ou-bruncher-a-paris-13-les-jardins-de-bagatelle-68173969/
/index.php/2011-04-07/
vraie adresse :
/article-ou-bruncher-a-paris-13-les-jardins-de-bagatelle-68173969/

Je me demande d'où sort ce /index.php/... Il n'est pas impossible que cela date de l'époque où le blog a été migré :-/
Commenter la réponse de Whismeril