manujay32 Posted October 24, 2014 Share Posted October 24, 2014 (edited) Bonjour, Depuis peu (impossible de savoir quand ni comment), pour toutes les pages CMS, et en particulier la page d'accueil j'ai le paramètre "?controllerUri" qui s'ajoute aux urls des drapeaux (car je suis en multilangues) du bloc langues prestashop. Quelqu'un a déjà rencontré ce problème ? Comment le solutionner ? Une idée ? Car c'est pas bon du tout pour le SEO. Je ne trouve pas de solution. Je me souviens qu'il y a peu, ce problème n'était pas présent. Je suis en 1.5 Merci par avance de votre aide Edited October 24, 2014 by manujay32 (see edit history) Link to comment Share on other sites More sharing options...
Gipielle Posted March 5, 2015 Share Posted March 5, 2015 Salut, nous avons le même problème, vous trovsto la solution? Link to comment Share on other sites More sharing options...
Lactor Posted March 5, 2015 Share Posted March 5, 2015 (edited) Bonjour, Avez-vous activé les urls simplifiées, dans le menu "préférences" > "SEO & URL" ? Si vous ne les avez pas activé, vous aurez une adresse du genre "http://maboutique.truc/index.php?id_product=2&controller=product". Si elles sont activées, votre url ressemblera à quelque chose du genre "http://maboutique.truc/ma-categorie/8-mon-super-produit.html". Si vous les avez activées , vous aurez un menu "options" en-dessous de l' "'url de la boutique", toujours au même endroit, et vous pouvez choisir comment afficher vos urls. Bon courage, Cordialement, Okar Edited March 5, 2015 by okar (see edit history) Link to comment Share on other sites More sharing options...
Gipielle Posted March 5, 2015 Share Posted March 5, 2015 Oui l'option est activée, l'URL avec controlleruri font leur apparition dans certains cas, par exemple en changeant la langue. Link to comment Share on other sites More sharing options...
Lactor Posted March 5, 2015 Share Posted March 5, 2015 Bonjour, Quelle la forme entière de vos urls qui buguent ? Dans la réécriture d'url, au niveau des pages CMS, quels sont les paramètres qui sont passés ? Peu-être avez-vous un paramètre {controller}. Cordialement, Okar Link to comment Share on other sites More sharing options...
Gipielle Posted March 5, 2015 Share Posted March 5, 2015 (edited) Dans l'image, il ya les paramètres Edited March 5, 2015 by Gipielle (see edit history) Link to comment Share on other sites More sharing options...
manujay32 Posted March 5, 2015 Author Share Posted March 5, 2015 J'ai exactement le même problème Gipielle et la même config. Est ce que ça pourrait être dut au controller dans l'url des modules ? Vu que le bloc langue est un module ? Link to comment Share on other sites More sharing options...
Gipielle Posted March 5, 2015 Share Posted March 5, 2015 Je ai le problème seulement dans l'index, sur les autres pages agit toujours ok Link to comment Share on other sites More sharing options...
Lactor Posted March 5, 2015 Share Posted March 5, 2015 Bonjour, @manujay32 : Oui, peut-être.. Le module blocklanguage ne contient pas de controller vraiment, je suis en train de décortiquer un peu où c'est renvoyé.Je travaille en 1.6, donc si ces fonctionnalités ont changé, je ne pourrais pas être de grand utilité. De ce que j'en ai vu sur le fichier du module (en 1.6), la méthode est la même, entre les produits, les catégories et les pages CMS... Juste au niveau du Dispatcher où la méthode pour les produits va chercher le controller produits, la méthode de catégorie va chercher le controller catégories et idem pour les cms. Je penche vraiment pour un problème au niveau de la réécriture de l'url, parce que les méthodes pour les liens sont quasi identiques. Ou peut-être dans le fichiers de model Link.php (dans /classes/), mais je n'ai pas vu de chose étrange au niveau du code... Surtout si ça bug une fois sur deux avec le changement de langue uniquement... Si quelqu'un d'autre passe par ici et sait quoi faire pour vous aider, ça sera mieux. Je ferai mes recherches, mais je ne promets rien \: Bon courage en tous les cas, Cordialement, Okar Link to comment Share on other sites More sharing options...
manujay32 Posted March 5, 2015 Author Share Posted March 5, 2015 @okar : Merci pour ton aide. Oui effectivement c'est flagrant sur l'index mais il me semble l'avoir vu autre part. Faudra que je le retrouve. En tout cas sur catégories et produits pas de soucis en changeant de langue. Link to comment Share on other sites More sharing options...
Gipielle Posted March 5, 2015 Share Posted March 5, 2015 Comment sont créés précisément l'url? Link to comment Share on other sites More sharing options...
Lactor Posted March 5, 2015 Share Posted March 5, 2015 (edited) @Gipielle : L'url réécrite est la forme absolue de l'url "h.ttp:/ /monsite.truc/index.php?controller=product&id_product=8" par exemple, sous une forme plus courte et plus lisible pour les moteurs de recherches (comme pour les clients, d'ailleurs). La forme absolue ci-dessus va en fait pointer vers la localisation de la ressource : en gros, lorsque le client veut visiter la page du produit n°8, le navigateur va demander à monsite.truc d'aller chercher le bon produit. Pour cela, on va questionner le contrôleur des produits pour qu'il aille chercher le produit dont le id_product est 8. (je résume en gros) La réécriture d'url permet de cacher ces étapes, de ne pas montrer les id des produits entre autre (les clients s'en fichent de savoir que la crème de beauté Nivaya minceur est le produit n°8 dans la base de données, ça ne leur sert à rien). La réécriture est gérée par un module php intégré sur le serveur (c'est pour cela que sur certains serveurs, on ne peut pas activer cette fonctionnalité). Le format est par contre géré par Prestashop, dans votre back-office, notamment. C'est assez bizarre qu'un controller pointe son nez dans une url réécrite. J'espère avoir été assez claire dans mes explications... @manujay32 : oui, j'ai parlé des CMS car c'est dit dans le problème initial : "[...] pour toutes les pages CMS, et en particulier la page d'accueil [...]". Le problème viendrait du Dispatcher ou du Controller (lequel ?) qui n'arrive pas à prendre en charge un controller de plus pour les langues... Je testerai en version 1.5 chez moi, quand j'aurais le temps... Cordialement, Okar Edited March 5, 2015 by okar (see edit history) Link to comment Share on other sites More sharing options...
manujay32 Posted March 5, 2015 Author Share Posted March 5, 2015 Je pense que c'est un problème du module de langue, par exun paramètre du module au niveau d'une variable php qui empêche de cacher le paramètre controlleruri au niveau du controller, enfin l'adéquation entre le code prestashop et le module. Ce qui expliquerai aussi pourquoi c'est arrivé d'un coup (mise à jour du module par ex). @Gipielle : Pourrait tu nous donner la version de ton module bloc langues ? La mienne c'est 1.3.2 Merci Link to comment Share on other sites More sharing options...
Lactor Posted March 5, 2015 Share Posted March 5, 2015 (edited) Je suis en 1.3.3 en version 1.6.0.8 de prestashop. Peut-être est-dû aussi à une mauvaise compatibilité prestashop/module de langues, car je n'ai pas de problème sur ma boutique de test, en multiboutique et multilangue... Edited March 5, 2015 by okar (see edit history) Link to comment Share on other sites More sharing options...
Gipielle Posted March 6, 2015 Share Posted March 6, 2015 Le mien est un formulaire personnalisé, mais je pense qu'il est pratiquement égale à l'original, version 1.1 Link to comment Share on other sites More sharing options...
manujay32 Posted March 6, 2015 Author Share Posted March 6, 2015 Un formulaire personnalisé ? C'est à dire ? Link to comment Share on other sites More sharing options...
Gipielle Posted March 6, 2015 Share Posted March 6, 2015 Fondamentalement ceux qui ont fait de notre modèle, ils ont changé le nom, mais le module est le même. Link to comment Share on other sites More sharing options...
Gipielle Posted March 17, 2015 Share Posted March 17, 2015 Des nouvelles? Link to comment Share on other sites More sharing options...
Biladishop Posted August 17, 2015 Share Posted August 17, 2015 Bonjour, je vous signale aussi que j ai le meme soucis que vous quand on change de langue il y a ?controllerUri=index qui apparait , ce qui est mauvais pour le seo , car cela crée des doublon de URL , avez vous trouvé une solution , je suis avec la toute dernière version à ce jour . Link to comment Share on other sites More sharing options...
ibzslab Posted September 6, 2015 Share Posted September 6, 2015 Bonjour, Je profite de ce post car les liens vers les autres langues sauf le Francais ne fonctionne pas, j'ai droit à une page blanche... monsite.be/en ne donne rien. pouvez-vous m'aider? Je suis en 1.6.0.14 Merci d'avance Link to comment Share on other sites More sharing options...
Steve360 Posted March 22, 2016 Share Posted March 22, 2016 Bonjour à tous, Exactement le même problème depuis peu... certainement lié à la désactivation temporaire de la seconde langue de mon site. J'ai donc la surprise de voir débarquer un "fr/?controllerUri=index" sur ma page d’accueil. Une solution sera appréciée je crois! Merci Steve Link to comment Share on other sites More sharing options...
Serpes Posted April 24, 2016 Share Posted April 24, 2016 (edited) Bonjour I had the same problem. After investigating a little I've seen that controllerUri is used when _PS_ADMIN_DIR_ is defined. It's supposed that this constant it's not defined in front office but, in my case, there was one module that was defining it. It was the prestashop module Cronjobs. If deleted this lines: if (defined('_PS_ADMIN_DIR_') === false) define('_PS_ADMIN_DIR_', _PS_ROOT_DIR_.'/admin/'); and changed this one: return basename(_PS_ADMIN_DIR_); with: return basename(PS_ROOT_DIR_.'/admin/'); Edited April 24, 2016 by Serpes (see edit history) Link to comment Share on other sites More sharing options...
Steve360 Posted April 25, 2016 Share Posted April 25, 2016 Hi Serpes, I tried your solution but it didn't work on my PS.. the website is unreachable and I get back to the original setup to fix it. J'ai essayé ta solution mais ça ne fonctionne pas.. mon site est inaccessible et je dois revenir au fichier original pour le corriger donc. I think we should never delete but comment.. Je pense que nous ne devrions jamais supprimer mais commenter.. Steve Link to comment Share on other sites More sharing options...
Serpes Posted April 26, 2016 Share Posted April 26, 2016 Hi Serpes, I tried your solution but it didn't work on my PS.. the website is unreachable and I get back to the original setup to fix it. J'ai essayé ta solution mais ça ne fonctionne pas.. mon site est inaccessible et je dois revenir au fichier original pour le corriger donc. Did you edit the cronjob module? I've discovered an error in what I did. Right now I've changed my cronjob module. It doesn't define _PS_ADMIN_DIR_ and I've changed function getAdminDir like this: protected function getAdminDir() { return basename('_PS_ADMIN_DIR_'); } Link to comment Share on other sites More sharing options...
Steve360 Posted April 26, 2016 Share Posted April 26, 2016 (edited) Wonderful, it's fixed! RESOLVED Super, ça fonctionne! RESOLU To do a safe modification, I create an override with a modified "cronjobs.php" file... Pour bien faire, j'ai créé un override de mon fichier "cronjobs.php"... Now the "controller-uri" doesn't exist in my address bar! Désormais, le "controller-uri" ne s'affiche plus dans ma barre d'adresse! Thank you very much Serpes!! Steve OOOOPPSSS !!! I tried to access to the CRON menu in BO.. and I see the following message : J'ai essayé d'accéder au menu CRON du BO.. et j'ai vu le message suivant: [PrestaShop] Fatal error in module file :/home/salesupcif/www/override/modules/cronjobs/cronjobs.php: Cannot redeclare class CronJobs So.. I have to reinstall the original file now.. Donc.. je dois maintenant réinstaller le fichier original. Edited April 26, 2016 by Steve360 (see edit history) Link to comment Share on other sites More sharing options...
Serpes Posted April 26, 2016 Share Posted April 26, 2016 Wonderful, it's fixed! RESOLVED Super, ça fonctionne! RESOLU To do a safe modification, I create an override with a modified "cronjobs.php" file... Pour bien faire, j'ai créé un override de mon fichier "cronjobs.php"... Now the "controller-uri" doesn't exist in my address bar! Désormais, le "controller-uri" ne s'affiche plus dans ma barre d'adresse! Thank you very much Serpes!! Steve OOOOPPSSS !!! I tried to access to the CRON menu in BO.. and I see the following message : J'ai essayé d'accéder au menu CRON du BO.. et j'ai vu le message suivant: [PrestaShop] Fatal error in module file :/home/salesupcif/www/override/modules/cronjobs/cronjobs.php: Cannot redeclare class CronJobs So.. I have to reinstall the original file now.. Donc.. je dois maintenant réinstaller le fichier original. I don't know how did you made the override but looks like the error is because the override class has the same name as the original one. It must be like: class CronjobsOverride extends Cronjobs { // YOUR OVERRRIDE } I didn't use the override because the constant declaration was outside the class so I had to touch the original file anyway Link to comment Share on other sites More sharing options...
Steve360 Posted April 27, 2016 Share Posted April 27, 2016 You're right again! I save the original file on my computer (juste in case..) and I modified the "cronjobs.php" file with your information. Now, it works... no "controller-uri" and no error message! Thanks a lot Serpes, you rock! Steve SUJET RESOLU Link to comment Share on other sites More sharing options...
Steve360 Posted May 10, 2016 Share Posted May 10, 2016 OK.. sorry to re-open a solved subject.. but after a clean up of my browser history, the "controllerUri=index" reappears on Chrome (only Chrome..) ! I'll get crazy with this! Link to comment Share on other sites More sharing options...
Gipielle Posted October 19, 2016 Share Posted October 19, 2016 Hello, so the solution is that on post 22 or on post 24 ? Thanks Link to comment Share on other sites More sharing options...
Gipielle Posted October 19, 2016 Share Posted October 19, 2016 We have the problem but cronjob is not installed ... Link to comment Share on other sites More sharing options...
Valdic Posted June 2, 2018 Share Posted June 2, 2018 (edited) On 24/4/2016 at 4:45 PM, Serpes said: Bonjour I had the same problem. After investigating a little I've seen that controllerUri is used when _PS_ADMIN_DIR_ is defined. It's supposed that this constant it's not defined in front office but, in my case, there was one module that was defining it. It was the prestashop module Cronjobs. If deleted this lines: if (defined('_PS_ADMIN_DIR_') === false) define('_PS_ADMIN_DIR_', _PS_ROOT_DIR_.'/admin/'); and changed this one: return basename(_PS_ADMIN_DIR_); with: return basename(PS_ROOT_DIR_.'/admin/'); Thank you! That was the solution for me. Same problem with Prestashop 1.7.3.3. Problem was related to cronjob module, if I disable it problem was gone. But as I need the module, with that fix the problem is gone with module enabled and working. Edited June 2, 2018 by Valdic (see edit history) Link to comment Share on other sites More sharing options...
Gipielle Posted June 8, 2018 Share Posted June 8, 2018 This solution doesn't solve problem for me. Something to check ? Link to comment Share on other sites More sharing options...
disarci Posted September 16, 2019 Share Posted September 16, 2019 HI, cannot find why on some presta (update from 1.7.0) in language block on index page I have: ?controllerUri=index at the end of the link.... I solved this by: open class/Link.php line 1432 (ps 1.7.6.1) after: switch ($params['entity']) { case 'language': $link = $context->link->getLanguageLink($params['id']); switch ($params['entity']) { case 'language': $link = $context->link->getLanguageLink($params['id']); I added: $link = str_replace('?controllerUri=index','',$link); and clean cache..... (or remove /var/cache/prod/class_index.php) you MUST have friendly url activated.... Link to comment Share on other sites More sharing options...
Gipielle Posted September 16, 2019 Share Posted September 16, 2019 But in PS 1.5 classes/Link.php i have this public function getLanguageLink($id_lang, Context $context = null) { if (!$context) $context = Context::getContext(); $params = $_GET; unset($params['isolang'], $params['controller']); if (!$this->allow) $params['id_lang'] = $id_lang; else unset($params['id_lang']); $controller = Dispatcher::getInstance()->getController(); if (!empty(Context::getContext()->controller->php_self)) $controller = Context::getContext()->controller->php_self; if ($controller == 'product' && isset($params['id_product'])) return $this->getProductLink((int)$params['id_product'], null, null, null, (int)$id_lang); elseif ($controller == 'category' && isset($params['id_category'])) return $this->getCategoryLink((int)$params['id_category'], null, (int)$id_lang); elseif ($controller == 'supplier' && isset($params['id_supplier'])) return $this->getSupplierLink((int)$params['id_supplier'], null, (int)$id_lang); elseif ($controller == 'manufacturer' && isset($params['id_manufacturer'])) return $this->getManufacturerLink((int)$params['id_manufacturer'], null, (int)$id_lang); elseif ($controller == 'cms' && isset($params['id_cms'])) return $this->getCMSLink((int)$params['id_cms'], null, false, (int)$id_lang); elseif ($controller == 'cms' && isset($params['id_cms_category'])) return $this->getCMSCategoryLink((int)$params['id_cms_category'], null, (int)$id_lang); elseif (isset($params['fc']) && $params['fc'] == 'module') { $module = Validate::isModuleName(Tools::getValue('module')) ? Tools::getValue('module') : ''; if (!empty($module)) { unset($params['fc'], $params['module']); return $this->getModuleLink($module, $controller, $params, null, (int)$id_lang); } } return $this->getPageLink($controller, null, $id_lang, $params); } Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now