substitution d'url quand un squelette n'existe plus

Le titre n'est pas bien clair, alors un peu d'explication :
Un site assez copieux (3000 articles) est en refonte. Le mot d'ordre est de simplifier les choses et un grand ménage est fait dans les squelettes et certains disparaissent.
Le souci est alors que certaines url figurant dans le contenu des articles deviennent en échec.

Exemple : soit un squelette page-detail.html qui n'existe plus. Tous les liens écrits en dur précédemment par les rédacteurs dans les articles du type [Voir l'article ->mon-domaine.tld/?page=page-detail&id_article=xxx] vont conduire à une erreur 404.

Je voudrais que tous ces liens redirigent vers l'article [Voir l'article ->articlexxx]

Soluce 1 : corriger à la main tous les articles !!!!
Soluce 2 : garder le squelette page-detail et n'y mettre que <INCLURE{fond=content/article,env}>. Ça fonctionne, mais l'url reste une url à la noix

À votre avis, quelle serait la solution pour avoir une redirection "propre" ?
1/ une fonction qui remplace toutes les occurrences de "page=page-detail&id_article=" par "article" ?
2/ une règle dans le htaccess (et dans ce cas-là, ça pourrait s'écrire comment ?)
3/ Autre chose ???

Merci ++++ d'avance de vos bons conseils

Le 15/07/2020 à 19:28, Manu a écrit :

3/ Autre chose ???

Garder le squelette et rediriger dedans :

Avec une redirection permanente, donc 301 à la fin
[(#VAL|sinon_interdire_acces{nouvelleadresse, 301})]

--
RastaPopoulos

Le 15/07/2020 à 20:02, RastaPopoulos a écrit :

Le 15/07/2020 à 19:28, Manu a écrit :

3/ Autre chose ???

Garder le squelette et rediriger dedans :
|sinon_interdire_acces - SPIP

Avec une redirection permanente, donc 301 à la fin
[(#VAL|sinon_interdire_acces{nouvelleadresse, 301})]

Ah, j'arrive sur des 404 ou sur des messages du compilateur qui n'est pas content avec ma syntaxe.
Là où je ne comprends pas comment rédiger, c'est comment glisser l'id_article dans l'écriture "nouvelle adresse"
J'essaye des trucs genre
[(#VAL|sinon_interdire_acces{[(#URL_PAGE{article}|parametre_url{id_article,#ENV{id_article})], 301})]
mais, niet....
Faut rédiger ça comment ?

Le 15/07/2020 à 20:45, Manu a écrit :

Le 15/07/2020 à 20:02, RastaPopoulos a écrit :

Le 15/07/2020 à 19:28, Manu a écrit :

3/ Autre chose ???

Garder le squelette et rediriger dedans :
|sinon_interdire_acces - SPIP

Avec une redirection permanente, donc 301 à la fin
[(#VAL|sinon_interdire_acces{nouvelleadresse, 301})]

Ah, j'arrive sur des 404 ou sur des messages du compilateur qui n'est pas content avec ma syntaxe.
Là où je ne comprends pas comment rédiger, c'est comment glisser l'id_article dans l'écriture "nouvelle adresse"
J'essaye des trucs genre
[(#VAL|sinon_interdire_acces{[(#URL_PAGE{article}|parametre_url{id_article,#ENV{id_article})], 301})]
mais, niet....
Faut rédiger ça comment ?

Je ne m'en sortais pas avec les { et les )], dans une boucle, c'est plus simple

<BOUCLE_redirection(ARTICLES){id_article}>
[(#VAL|sinon_interdire_acces{#URL_ARTICLE, 301})]
</BOUCLE_redirection>

En tout cas, cool (et SPIP, c'est toujours aussi bien ;-))
Merci ++++

Pourquoi une boucle ?

#URL_ARTICLE{#ID_ARTICLE}

--
RastaPopoulos

Bonjour,

Question connexe :

Comment ne pas créer d'url publique sur des objets éditoriaux ?

Par exemple je désire qu'aucune URL de mot-clé de l'espace public n'aboutisse, ou bien aboutisse sur une 404.
(tout en laissant l'usage des mots-clés dans l'espace privé).

Merci

Le 15/07/2020 à 19:28, Manu a écrit :

Le titre n'est pas bien clair, alors un peu d'explication :
Un site assez copieux (3000 articles) est en refonte. Le mot d'ordre est de simplifier les choses et un grand ménage est fait dans les squelettes et certains disparaissent.
Le souci est alors que certaines url figurant dans le contenu des articles deviennent en échec.

--
Stéphane
17 Charente-Maritime

Le 15/07/2020 à 23:14, Stephane Santon a écrit :

Comment ne pas créer d'url publique sur des objets éditoriaux ?

$tables['spip_mots']['page'] = false;

--
RastaPopoulos

Le 15/07/2020 à 22:37, RastaPopoulos a écrit :

Pourquoi une boucle ?

Parce que je ne trouvais pas comment écrire ça (hi, hi, hi)

#URL_ARTICLE{#ID_ARTICLE}

Effectivement, c'est plus simple ;-))

bonjour
Le 15 juil. 2020 à 19:28, Manu <manu@mine-de-rien.fr> a écrit :

Le titre n'est pas bien clair, alors un peu d'explication :
Un site assez copieux (3000 articles) est en refonte. Le mot d'ordre est de simplifier les choses et un grand ménage est fait dans les squelettes et certains disparaissent.
Le souci est alors que certaines url figurant dans le contenu des articles deviennent en échec.

Exemple : soit un squelette page-detail.html qui n'existe plus. Tous les liens écrits en dur précédemment par les rédacteurs dans les articles du type [Voir l'article ->mon-domaine.tld/?page=page-detail&id_article=xxx] vont conduire à une erreur 404.

avec le plugin rechercher/remplacer

remplacer
“mon-domaine.tld/?page=page-detail&id_article”
par “art”

Cladue

Je voudrais que tous ces liens redirigent vers l'article [Voir l'article ->articlexxx]

Soluce 1 : corriger à la main tous les articles !!!!
Soluce 2 : garder le squelette page-detail et n'y mettre que <INCLURE{fond=content/article,env}>. Ça fonctionne, mais l'url reste une url à la noix

À votre avis, quelle serait la solution pour avoir une redirection "propre" ?
1/ une fonction qui remplace toutes les occurrences de "page=page-detail&id_article=" par "article" ?
2/ une règle dans le htaccess (et dans ce cas-là, ça pourrait s'écrire comment ?)
3/ Autre chose ???

Merci ++++ d'avance de vos bons conseils

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 16/07/2020 à 06:59, dlatr a écrit :

avec le plugin rechercher/remplacer
Rechercher remplacer - SPIP-Contrib

Ah, je ne connaissais pas.
Décidément, c'est incroyable toutes ces richesses dont regorge notre petit écureuil...
Merci ;-))

Bonjour,

Le 16/07/2020 à 01:34, RastaPopoulos a écrit :

$tables['spip_mots']['page'] = false;

Euh... à mettre dans mes_options ?
Toujours accès à mes objets mots sur le site public...

Pour préciser, ce n'est pas sur *mon* objet éditorial, mais bien sur les *mots* de Spip.

--
Stéphane
17 Charente-Maritime

Le 16/07/2020 à 08:46, Stephane Santon a écrit :

Euh... à mettre dans mes_options ?

Ça peut mais c'est plus propre dans un plugin.

C'est mieux de connaitre la doc sur les pipelines :

--
RastaPopoulos

Bonjour,

Pas réussi...

-- Déclaré dans paquet.xml :
<pipeline nom="declarer_tables_objets_sql" inclure="bsantonum_pipelines.php" />

-- Fonction dans bsantonum_pipelines.php :
function bsantonum_declarer_tables_objets_sql($tables) {
     $tables['spip_mots']['page'] = false;

     return $tables;
}

Vidé le cache, désactive et réactivé le plugin, ...

Le 16/07/2020 à 09:50, RastaPopoulos a écrit :

Le 16/07/2020 à 08:46, Stephane Santon a écrit :

Euh... à mettre dans mes_options ?

Ça peut mais c'est plus propre dans un plugin.

C'est mieux de connaitre la doc sur les pipelines :
Qu'est-ce qu'un pipeline ? - Programmer avec SPIP 4

--
Stéphane
17 Charente-Maritime

Il faut être sûr de passer *après* le plugin Mots, sinon forcément c'est sa définition qui reste. Donc nécessiter ou utiliser le plugin dans ton XML.

--
RastaPopoulos

Le 16/07/2020 à 15:47, RastaPopoulos a écrit :

Il faut être sûr de passer *après* le plugin Mots, sinon forcément c'est sa définition qui reste. Donc nécessiter ou utiliser le plugin dans ton XML.

Rajouté dans paquet :

  <necessite nom="mots" compatibilite="[2.8.8;]" />

Essayé aussi auparavant avec <utilise>

Mots toujours accessibles...

--
Stéphane
17 Charente-Maritime