Jump to content
cail-tech

[Resolu] Catégorie inaccessible, l'url renvoie sur une page 404

Recommended Posts

Bonjour,

 

Je possède un Prestashop version 1.5.2 qui tournait sans problème, jusqu'à aujourd'hui.

J'ai ajouté plusieurs sous-catégories à ma boutique puis je me suis rendu compte que certaines renvoyaient la "page non trouvée".

 

J'utilise le module PM Advanced Top Menu, ce qui a peu d'importance en soit pour mon problème je pense mais je préfere préciser.

 

Voici deux URL de mon site présentes dans le menu : la première fonctionne, la seconde renvoie une page non trouvée.

  • www.accessoires-vintage.fr/93-lunettes-soleil-vintage
  • www.accessoires-vintage.fr/100-lunettes-formes-divers

La seule différence que je vois entre ces deux URL et la taille de l'ID de la catégorie qui est de 3 caractères pour la seconde URL qui ne fonctionne pas.

Comme par hasard, pour toutes les URL inaccessibles, j'ai un ID de 3 chiffres et pour toutes celles qui fonctionnent, il n'y a que deux chiffres.

 

Je doute que le fichier .htaccess soit problématique, puisque j'ai l'erreur uniquement avec ces catégories dont l'ID est supérieur à 100, et de plus les URL des produits marchent très bien.

 

Toutefois, il n'y a peut-être pas de rapport entre le nombre de caractère de l'ID et le bon fonctionnement de la réecriture d'URL, j'en ai pas trouvé dans le code en tout cas...

 

Quelqu'un à une idée ?

 

Par avance merci :D

Edited by cail-tech (see edit history)

Share this post


Link to post
Share on other sites

Il semble que personne n'ait d'idée.

Je continue donc de chercher d'où vient le problème qui est vraiment flagrant en désactivant l'url rewriting, ce qui me prouve également que le .htaccess n'est pas en cause.

 

J'ai aussi tester de remettre le thème par défaut, ce qui n'a pas changé grand chose au problème.

 

Exemple :

URL fonctionnelle

www.accessoires-vintage.fr/index.php?id_category=93&controller=category

www.accessoires-vintage.fr/index.php?id_category=94&controller=category

 

URL non fonctionnelle

www.accessoires-vintage.fr/index.php?id_category=101&controller=category

www.accessoires-vintage.fr/index.php?id_category=102&controller=category

 

Les 2 derniers liens me renvoie la page :

www.accessoires-vintage.fr/index.php?controller=404

 

En creusant, je suis tomber dans la classe Dispatcher.php avec un tableau contenant ces valeurs pour la category :

 

'category_rule' => array(
		'controller' =>	'category',
		'rule' =>		'{id}-{rewrite}',
		'keywords' => array(
			'id' =>				array('regexp' => '[0-9]+', 'param' => 'id_category'),
			'rewrite' =>		array('regexp' => '[_a-zA-Z0-9-\pL]*'),
			'meta_keywords' =>	array('regexp' => '[_a-zA-Z0-9-\pL]*'),
			'meta_title' =>		array('regexp' => '[_a-zA-Z0-9-\pL]*'),
		),
	)

 

On peut noter les regles Regex [0-9]+ et [_a-zA-Z0-9-\pL] et en testant via le site regextester.com, l'url 101-lunettes-de-vue est bien "matché" ....

 

Si on suit le raisonnement, l'url est bien écrite, elle est bien récupérée, les règles de redirections semblent fonctionner aussi mais le résultat retourné est une page non trouvée.

 

Je n'y comprends rien ...

Edited by cail-tech (see edit history)

Share this post


Link to post
Share on other sites

Hello,

 

Désolé mais on dirait plutôt un problème de base de données que de code. Il faut effectivement regarder les nleft et nright des catégories en question je pense.

 

Cordialement

Share this post


Link to post
Share on other sites

Bonjour,

 

tout remarche enfin !

 

Pour information, mon problème était bien lié au nleft et nright des catégories, dont l'ID est supérieur à 99 (bien que ce dernier point ne semble qu'une coincidence)

 

Effectivement, en cherchant à nouveau je suis tombé sur le topic ci-dessous avec un problème très semblable :

http://www.prestasho...16#entry1288116

 

puis en creusant voici la solution :

http://www.prestasho...-et-nright-for/

 

Un petit module, fonctionnant aussi sur 1.5.4, permet la regénération du nleft et nright avec les bonnes valeurs.

 

Cordialement.

 

Sinon, comment mettre en [résolu] ?

Edited by cail-tech (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

Un million de merci !! Le module fonctionne a merveille aussi sur version 1.6.0.9

 

Bref une belle épine du pied enlevée !

 

Tout est partit en brioche alors que j'ai simplement ajouté des keyword dans mes catégories...!

Share this post


Link to post
Share on other sites

@tomasz_be : Comment faites-vous fonctionner le module sur 1.6.0.11? J'ai essayé de l'importer via l'admin et via FTP sur 1.6.0.13 et l'import ne fonctionne pas.

Share this post


Link to post
Share on other sites

Bonjour

 

Je suis dans le même cas je crois.

Après avoir migré de 1.4 à 1.6.0.13, je viens de m'apercevoir que je ne peux pas utiliser mes nouvelles catégories, tout juste créées.

Impossible de les associer à un article et j'ai une page 404 qui s'affiche sur ma boutique. En plus mon fils d'ariane est complètement erroné

 

C'est ce module que je dois prendre non? Il existe une version de ce module pour ma version prestashop? ou le fait qu'il y ait une version pour 1.6 marche aussi bien pour 1.6.0.9 que pour 1.6.0.11 ou 13? (désolée pour la question, je débute...)

 

Merci pour votre aide

Share this post


Link to post
Share on other sites

Bonjour à tous,

 

Même problème pour moi avec 1.6.0.11 , quelqu'un à trouvé a solution??

 

merci !

Share this post


Link to post
Share on other sites

Bonjour,

 

 

Après un import de catégories, j'ai eu le même soucis : redirection vers des 404 alors que l'url des catégories étaient correctes.

 

Pour le corriger, il faut en effet mettre à jour les nleft et nright de chaque catégorie, et il y a une fonction prévue pour ça dans la classe Category.php : regenerateEntireNtree()

 

 

Voici comment procéder pour appeller cette fonction, pour les utilisateurs ne connaissant pas bien le PHP :

- éditez le fichier /controllers/front/IndexController.php (ou son override si celui-ci existe)

 

- juste avant la ligne "$this->setTemplate(_PS_THEME_DIR_.'index.tpl');", ajoutez ces 2 lignes :

 

    $category_home = new Category(2); // 2 correspondant à la catégorie "Accueil" de votre site, changez cette valeur si votre catégorie "Accueil" a un id différent

    $category_home->regenerateEntireNtree();
 
Ensuite enregistrez le fichier, puis il vous suffit d'aller sur la page d'accueil de votre site une fois pour appeller ce code. Une fois que cela est fait, testez d'aller sur une de vos catégories et cela devrait fonctionner.
 
 
IMPORTANT :
N'oubliez pas d'enlever les 2 lignes que vous venez d'ajouter au fichier IndexController.php, car sinon la fonction regenerateEntireNtree() sera appellée à chaque fois que quelqu'un est sur votre page d'accueil, donc cela ne fera que ralentir le site.

Share this post


Link to post
Share on other sites

Bonjour,

 

tout remarche enfin !

 

Pour information, mon problème était bien lié au nleft et nright des catégories, dont l'ID est supérieur à 99 (bien que ce dernier point ne semble qu'une coincidence)

 

Effectivement, en cherchant à nouveau je suis tombé sur le topic ci-dessous avec un problème très semblable :

http://www.prestasho...16#entry1288116

 

puis en creusant voici la solution :

http://www.prestasho...-et-nright-for/

 

Un petit module, fonctionnant aussi sur 1.5.4, permet la regénération du nleft et nright avec les bonnes valeurs.

 

Cordialement.

 

Sinon, comment mettre en [résolu] ?

 

 

Fonctionne nickel avec PS 1.6.1.4

 

Merci beaucoup pour la solution.

Share this post


Link to post
Share on other sites

Bonjour, malgré l'installation du module en question et le fait que vider le cache mais j'ai toujours le soucis des catégories dont l'id > 99. ces catégories me ramenent toute a une page d'erreur. Que faire svp

Share this post


Link to post
Share on other sites

 

Bonjour,

 

 

Après un import de catégories, j'ai eu le même soucis : redirection vers des 404 alors que l'url des catégories étaient correctes.

 

Pour le corriger, il faut en effet mettre à jour les nleft et nright de chaque catégorie, et il y a une fonction prévue pour ça dans la classe Category.php : regenerateEntireNtree()

 

 

Voici comment procéder pour appeller cette fonction, pour les utilisateurs ne connaissant pas bien le PHP :

- éditez le fichier /controllers/front/IndexController.php (ou son override si celui-ci existe)

 

- juste avant la ligne "$this->setTemplate(_PS_THEME_DIR_.'index.tpl');", ajoutez ces 2 lignes :

 

    $category_home = new Category(2); // 2 correspondant à la catégorie "Accueil" de votre site, changez cette valeur si votre catégorie "Accueil" a un id différent

    $category_home->regenerateEntireNtree();
 
Ensuite enregistrez le fichier, puis il vous suffit d'aller sur la page d'accueil de votre site une fois pour appeller ce code. Une fois que cela est fait, testez d'aller sur une de vos catégories et cela devrait fonctionner.
 
 
IMPORTANT :
N'oubliez pas d'enlever les 2 lignes que vous venez d'ajouter au fichier IndexController.php, car sinon la fonction regenerateEntireNtree() sera appellée à chaque fois que quelqu'un est sur votre page d'accueil, donc cela ne fera que ralentir le site.

 

 

Merci pour cette astuce qui fonctionne sur 1.6.1.12 :wub:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More