[plugin] plxPermalinks : réécriture d'url

StéphaneStéphane Member, Former PluXml Project Manager
mai 2013 modifié dans Plugins
Le plugin plxPermalinks permet de personnaliser la réécriture des urls de PluXml

Par exemple, transformer /article1/premier-article en /art1-premier-article.html ou /premier-article/1.html

Télécharger (04/05/2013)

Fonctionnalités :

- Possibilité de configurer toutes les urls de PluXml (articles, pages statiques, catégories, tags, archives...)
- Redirection 301 (Moved Permanently) des anciennes urls, vers les nouvelles (évite le duplicate-content)
- Utilisation possible de requêtes GET et POST sur les pages statiques.

plxPermalinks.png

GitHub : https://github.com/amoweb/plxPermalinks/

Consultant PluXml

Ancien responsable du projet (2010 à 2018)

«134

Réponses

  • Cool, beaucoup vont aimer cela Stéphane ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Les honneurs reviennent surtout à Amaury qui a développer ce plugin.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci à la team ^^
  • Merci pour ce merveilleux plugin ! Il fonctionne très bien !
  • JosJos Member
    avril 2012 modifié
    Ca c'est un plugin très intéressant, je vais surement l'utiliser.


    EDIT : çà ne semble pas fonctionner cher moi. Par exemple pour les articles je met :


    article/$2.html au lieu de article/$1/$2.html


    Si je modifie l'url, et que je veux voir l'article, je tombe sur une erreur 404. Pour résoudre le problème j'ai essayé de recharger la réécriture d'url (désactivation et activation pour recharger le htacces), et d'écrire un nouvel article test.


    Le problème persiste. Ca fonctionne chez vous?
  • Jos, il faut que tu garde les deux $ dans l'url. Tu ne peux pas en garder qu'un seul.
  • J'attendais moi aussi ce plugin depuis longtemps, il est super-intéressant.


    Mais j'ai les mêmes problèmes que toi, Jos, mon menu ne fonctionne plus. J'ai également désactivé puis activé la réécriture des URL, mais sans davantage de résultat.


    J'utilise comme menu la liste des articles par catégorie, avec la version donnée par Jerry Wham que j'ai modifiée : http://forum.pluxml.org/viewtopic.php?pid=25600#p25600

    Ce programme utilise pourtant la réécriture des URL, avec $plxMotor->urlRewrite(...)


    Est-ce qu'il serait possible de modifier cette ligne :
    <a href="' . $plxMotor->urlRewrite("?article" . $num_article . "/" . plxUtils::strCheck($plxRecord_arts->f('url'))) . '">'
    
    pour que ça marche ?

    Ou la solution est-elle ailleurs ?
  • Francis, je ne comprend pas exactement ton problème. Tu as des erreur 404 ?
    Quelle est ta configuration du plugin ?
  • Merci Amoweb, plus de problème avec ta réponse précédente, qui est arrivée le temps que j''écrive mon message et que je vérifie quelques points pour être suffisamment précis.


    Quelques tests avec différentes configurations montrent effectivement que les deux paramètres $1 et $2 doivent être présents, sinon point de salut : soit ça ne marche pas, soit on revient à l'écriture initiale des URL, dans le meilleurs des cas.


    Mon menu fonctionne bien maintenant, en tenant compte de ta précision, qui mériterait d'être écrite sur la page de configuration (plus éventuellement un petit test à la validation, pour vérifier si les deux paramètres $1 et $2 sont bien présents et ne valider que si c'est le cas ?).


    Il suffit de savoir s'en servir, et c'est un plugin bien utile !
  • JosJos Member
    Merci ca fonctionne.
  • En effet il serait bien d'améliorer l'affichage pour qu'on comprenne qu'il faut utiliser tous les $.
  • BloodyBloody Member
    Fonctionne bien chez moi.
    Sauf pour les statics, j'ai des 403. :/

    Par contre si je paramètre les urls pour les articles ainsi :
    article/$1/$2.html qui génère par exemple : article/100/mon-article.html

    Je peux aussi y accéder en écrivant dans la barre d'adresse article/100/mon-article sans l'extension "html". Duplicate non ? :)

    Ça serait pas mal de rewriter ainsi "categorie/100/mon-article.html, mais je crois que ce n'est pas possible de placer la catégorie dans l'url ? :P Car un article peut avoir plusieurs catégories. :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bloody a écrit:
    Ça serait pas mal de rewriter ainsi "categorie/100/mon-article.html, mais je crois que ce n'est pas possible de placer la catégorie dans l'url ? :P Car un article peut avoir plusieurs catégories. :)

    Exact

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • BloodyBloody Member
    Dommage. :/
  • amowebamoweb Member
    Bloody : Tu as toujours des 403 pour les pages statiques peu importe la configuration ?
  • BloodyBloody Member
    mai 2012 modifié
    Non sauf si je laisse vide le champ des statics évidemment. ;)
    La valeur du $2 n'est pas réécrite.
  • amowebamoweb Member
    @Bloody : Tu as des caractère spéciaux dans les noms ? Essaies de créer une page avec que des caractères simples.
  • BloodyBloody Member
    mai 2012 modifié
    Aucun caractères accentués. Désolé Amo ;)

    Ni de caractères spéciaux. :)
  • LudMacLudMac Member
    mai 2012 modifié
    Euh, je ne fait pas tout-à-fait suite au fil des discussions, mais je me suis rendu compte d'un truc dans le sitemap.php qui reste écrit en version d'origine de pluxml.


    Alors, sur le plan purement technique, si tu accède à une URL version d'origine (domaine.com/static1/page), tu tombe bien sur la bonne page.
    Mais en passant par les liens de menu par exemple, les URL pour ces mêmes pages sont écrite version plugin (donc domaine.com/1/page.html par ex) : La y a un malaise pour le référencement ? Non ?


    Pourriez-vous faire en sorte que les URL du sitemap soit les mêmes que sur les liens du site ?
  • amowebamoweb Member
    En effet LudMac, il semblerait que les urls dans le sitemap.php ne soient pas réécrites.

    Au fait, petit conseil pour tous : si vous faites un lien vers une page à partir d'un article ou d'une page statique. Faites un lien vers la version non-réécrite, PluXml se chargera de la réécrire (l'avantage c'est que si vous changez vos urls, les liens seront mis à jour automatiquement).
  • LudMacLudMac Member
    Heu ? Comment peut-on passer des variables d'url sur les nouvelles url ?


    Cela ne fonctionne pas :(
    url réécrite : www.domaine.com/1-ma-page.html


    Rien n'y fait,
    www.domaine.com/1-ma-page.html?mavariable
    www.domaine.com/1-ma-page.html&mavariable
    www.domaine.com/1-ma-page?mavariable
    www.domaine.com/1-ma-page&mavariable


    Une idée ?
    Merci
  • amowebamoweb Member
    Je met à jour le premier post, avec une version qui réécrit les pages statiques dans le sitemap.php.
  • amowebamoweb Member
    LudMac : je n'ai pas encore prévu cette possibilité. Je vais essayer cette semaine.
  • LudMacLudMac Member
    Super !


    Merci pour la mise à jour ;)
    Et merci d'avance pour la solution des variables d'url, parce que pour le moment, je suis obligé de ne pas réécrire les url des pages statiques du coup :(


    Bon dimanche
  • amowebamoweb Member
    Sortie de la version 1.2 qui prend en compte les paramètres GET dans les pages statiques.
    Vous pouvez maintenant faire : /static/1/statique-1.html?height=8&var=13

    LudMac : tu vas être content :-)
  • LudMacLudMac Member
    Wouhou !!
    Plugin MAJ, fonctionne parfaitement bien ;)


    Merci :D
  • amowebamoweb Member
    Super :-), fais moi signe LudMac, si tu vois autre chose.
  • Je viens de tester ce plugin qui est vraiment bien. Mais (il y a toujours un mais) j'ai un petit souci sur ma page archives : par l'intermédiaire de mon plugin plugCalendar, je peux afficher les articles d'un jour en particulier. Les urls sont de la forme archives/annee/mois/jour
    Si j'active le plugin plxPermalinks, j'obtiens l'url suivante : archives/annee/mois.html/jour à la place de archives/annee/mois/jour.html

    Je propose donc les modifications suivantes afin d'obtenir l'url archives/annee/mois/jour.html :


    Fichier plxPermalinks.php, ligne 97, ajouter :
    # Pages dans les archives
    		if($this->getParam('pagesarchYM_rule')) # Année-mois-jour
    			$code .= '$output=preg_replace("#'.$plxAdmin->aConf["racine"].'archives/([0-9]{4})/([0-9]{2})/([0-9]{2})#","'.$plxAdmin->aConf["racine"].'@'.$this->getParam('pagesarchYM_rule') . '",$output);';
    


    Fichier plxPermalinks.php, ligne 121, ajouter :
    # Archive :
    		if($this->getParam('archYM_rule')) # Année-mois-jour
    			$code .= '$output=preg_replace("#'.$plxAdmin->aConf["racine"].'archives/([0-9]{4})/([0-9]{2}/([0-9]{2})#","'.$plxAdmin->aConf["racine"].'@'.$this->getParam('archYM_rule') . '",$output);';
    


    Fichier plxPermalinks.php, ligne 166, ajouter :
    			if($rule = $this->getParam('pagesarchYM_rule')) {
    				$rule = str_replace('.',"\\.",$rule);
    				$rule = str_replace('$1','([0-9]{4})',$rule);
    				$rule = str_replace('$2','([0-9]{2})',$rule);
    				$rule = str_replace('$3','([0-9]{2})',$rule);
    				$config .= 'RewriteRule ^' . $rule . '$  index.php?archives/$1/$2/$3  [L]'."\n";
    			}
    
    Il faudrait également pouvoir modifier le fichier config. Mais je n'ai pas eu le temps.
  • génial ce plugin que je découvre aujourd'hui. Je viens de le mettre en place sur mon blog. C'est parfait.
    Merci
  • amowebamoweb Member
    Merci Jerry Wham pour ta solution. Je vais tester ça cette semaine.
Connectez-vous ou Inscrivez-vous pour répondre.