Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Je viens de faire une migration de dotclear de la version 2.12.1 vers la 2.17.1 (je sais je suis lent) Et tout va bien sauf les liens générés par {{tpl:EntryURL}} qui auparavant étaient de la forme "example.com/Titre-entree" et sont maintenant "example.com/post/Titre-entree".
Ma config est un peu spéciale:
- Méthode de lecture de l'URL en QUERY et l'url du site est sans le "/?" mais une rêgle apache se charge d'envoyer la bonne query à partir de l'URL en "example.com/Titre-entree".
- Le Format d'URL des nouveaux billets est "Titre"
Je n'ai pas trouvé la cause de ce changement ni dans les notes de release ni dans le code donc me voilà bien dépourvu.
La question bonus est peut-être connaissez-vous un moyen de régler ça avec une modification de prepend.php ou l'ajout d'une constante dans le fichier de config ou dans les templates ?
Hors ligne
Bonjour
Peux-tu poster ici la règle de réécriture qui te permet de supprimer /post ?
Hors ligne
(...)
RewriteCond %{QUERY_STRING} (.*)q=(.*)$
RewriteRule ^/(tag|category|archive|page)(.*)$ /index.php?$1$2&q=%2 [L]
RewriteRule ^/(tag|category|archive|feed|envoyer|trackback|page|sitemap)(.*) /index.php?$1$2 [L]
(...)
RewriteRule ^/(.*) /index.php?post/$1 [L]
et aussi ceci dans le fichier index.php
if ($_SERVER['QUERY_STRING']=="post/index.html") { $_SERVER['QUERY_STRING']=""; }
mais bon, les redirections fonctionnent c'est la génération des liens qui pose problème.
Dernière modification par aloxe (2020-09-24 18:39:31)
Hors ligne
Après avoir installé un doctlear 2.12 j'ai constaté que les liens générés contenait déjà la type d'entrée. Il y a donc une modification supplémentaire que j'avais faite dans me souvenir.
Je l'ai retrouvée dans
class dcUrlHandlers
où
getURLFor()
retourne
// necessaire pour cause de rewrite dans apache.conf
$url = str_replace ("post/", "", $url);
return $url;
je retire la chaine "/post" de $url.
Du coup je me demande s'il n'y aurait pas quelque chose de plus élégant pour ce genre de changement.
Hors ligne
Il y avait un plugin du nom de FreeUrls par adjaya, mais je ne le retrouve plus sur son site ni sur Dotaddict. Peut-être pourrais-tu essayer de le contacter ?
Je ne pense pas que la gestion des urls ait changé entre les versions 2.12 et 2.17...
Hors ligne
Je confirme que la gestion d'URL n'a pas changé entre les versions 2.12 et 2.17, je pense que je m'en serais aperçu :-)
Il y a peut-être moyen en redéfinissant le schéma d'URL pour les billets, avec un plugin idoine du genre :
$core->url->unregister('post');
$core->url->register('post', 'post', '^(.+)$', ['dcUrlHandlers', 'post']);
Attention pas testé, et je ne suis pas certain qu'il n'y ait pas d'effet de bord !
Dotclear addicted since 2004
Hors ligne
Il y avait un plugin du nom de FreeUrls par adjaya, mais je ne le retrouve plus sur son site ni sur Dotaddict. Peut-être pourrais-tu essayer de le contacter ?
Le lien de la dernière version du plugin freeUrls est sur la page
https://forum.dotclear.org/viewtopic.ph … 44#p343344
du topic dédié en #93
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Merci pour ces suggestions, je viens d''installer freeUrls et cela ne propose que la redirection des pages ''lang pages gal galitem category tag'' mais pas des posts. C'est ce qui m'intéressait. Dommage…
Hors ligne
Je confirme que la gestion d'URL n'a pas changé entre les versions 2.12 et 2.17, je pense que je m'en serais aperçu :-)
Il y a peut-être moyen en redéfinissant le schéma d'URL pour les billets, avec un plugin idoine du genre :
$core->url->unregister('post'); $core->url->register('post', 'post', '^(.+)$', ['dcUrlHandlers', 'post']);
Attention pas testé, et je ne suis pas certain qu'il n'y ait pas d'effet de bord !
En fait ce serait ceci qu'il faudrait faire:
$core->url->register('post', '', '^post/(.+)$', ['', 'post']);
parce que les valeurs sont **$type, $url, $representation, $handler** et que c'est l'url doit être générée de la forme monblog.org/Tire-du-billet et que la requête sera traitée avec la représentation monblog.org/incex.php?post/Tire-du-billet
ce, à cause de ma rêgle apache:
RewriteRule ^/(.*) /index.php?post/$1 [L]
Merci pour m'avoir pointé une modif plus générique, j'ai modifié le fichier prepend.php et ça marche. Mais de là à faire un plugin, c'est plus compliqué.
Dernière modification par aloxe (2020-10-04 21:32:24)
Hors ligne
Merci pour ces suggestions, je viens d''installer freeUrls et cela ne propose que la redirection des pages ''lang pages gal galitem category tag'' mais pas des posts. C'est ce qui m'intéressait. Dommage…
de post aussi, je t'assure, vu que c'est ce qui a motivé la creation de ce plugin.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
aloxe a écrit :Merci pour ces suggestions, je viens d''installer freeUrls et cela ne propose que la redirection des pages ''lang pages gal galitem category tag'' mais pas des posts. C'est ce qui m'intéressait. Dommage…
de post aussi, je t'assure, vu que c'est ce qui a motivé la creation de ce plugin.
je viens de le réactiver et en effet il y a posts seulement je ne comprends pas trop comment marche de plugin, l'interface est plutȯt sybiline
☐ post ☐ redirect
[Enregistrer la configuration]
Hors ligne
Cocher 'post' supprime le post/ dans l'url, et cocher 'redirect' fait une redirection permanente (301) de l'ancienne url vers la nouvelle.
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Est ce que ce plugin fonctione quand le blog est réglé pour fonctionner à la fois avec le mode (Méthode de lecture de l'URL) QUERY STRING et le mode PATH INFO ? ou seulement PATH INFO?
Hors ligne
Vous n'êtes pas identifié(e).