Forum CMS Made Simple FR

Version complète : [RESOLU]Conflict réécriture d'URL
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

Sur un site, j'ai le module CGBlog et un module Catalogue que j'ai développé.

Lorsque je me rend sur le front dans la partie du blog, que je clique sur un article il s'affiche correctement.

Par contre, si je veux me rendre dans les archives du blog, je me retrouve avec une erreur 404.
Si je désactive mon module Catalogue le problème disparait.

J'ai modifié le fichier action.archive.php du module CGBlog pour ne plus avoir la réécriture d'URL sur les liens des archives se qui me permet d'avoir accès aux articles archivés. Mais Lorsque je clique sur un article archivé, j'ai une erreur 404 alors que l'URL est identique à celle des articles non archivés qui fonctionnent correctement.

Je vous met les URL réécrite de CGBlog et du module Catalogue
CGBLog :
Code :
[== Indéfini ==]
http://exemple.tld/actualites/archive/2016/03/62.html

Catalogue :
Code :
[== Indéfini ==]
http://exemple.tld/95/1/1/produit-01.html

Je vous met également la réécriture d'URL du module Catalogue
Code :
[== PHP ==]
public function InitializeFrontend() {
        $this->SetParameterType('template',CLEAN_STRING);
        $this->SetParameterType('summarytemplate',CLEAN_STRING);
        $this->SetParameterType('producttemplate',CLEAN_STRING);
        $this->SetParameterType('packtemplate',CLEAN_STRING);
        $this->SetParameterType('catid',CLEAN_STRING);
        $this->SetParameterType('prodid',CLEAN_STRING);
        $this->SetParameterType('packid',CLEAN_STRING);
        $this->SetParameterType('junk',CLEAN_STRING);
        $this->SetParameterType('pageid',CLEAN_INT);
        
        $this->RegisterModulePlugin();

        $this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',
                     array('action'=>'product'));
                    
        $this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<junk>.*?)$/',
                     array('action'=>'category'));
                    
        $this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<packid>[0-9]+)\/(?P<junk>.*?)$/',
                     array('action'=>'pack'));
        
                    
    }

Je ne vois pas de point commun avec la réécriture du module CGBlog...

Si vous avez une idée ou la solution.

Cordialement

bobjo
Alors j'ai continué mes recherche et c'est bien la réécriture d'URL du module Catalogue qui pose problème.
Il suffit que je commente les appels à la méthode RegisterRoute pour que les archives de CGBlog fonctionnent correctement.
Je cherche des explications ou un tuto sur la manière de construire les expressions régulières et mes réécriture d'URL de manière propre.

Si vous avez un lien.

Cordialement

bobjo
Bon j'ai trouvé !
Je sais pas trop pourquoi mais en ajoutant catalogue au début de mon expression régulière j'ai plus de problème...
Avant :
Code :
[== PHP ==]
$this->RegisterRoute('/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',
                     array('action'=>'product'));

Après :
Code :
[== PHP ==]
$this->RegisterRoute('/catalogue\/(?P<returnid>[0-9]+)\/(?P<catid>[0-9]+)\/(?P<prodid>[0-9]+)\/(?P<junk>.*?)$/',
                     array('action'=>'product'));

Si quelqu'un veux prendre le temps de m'expliquer...

Cordialement

bobjo