[RESOLU]Conflict réécriture d'URL

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
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
#1
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
#2
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
#2
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
#3
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
#3
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


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)