phliippeduverger Posted May 9, 2017 Share Posted May 9, 2017 Bonjour J'ai déja posé une premiere question plus générale, mais je pense que celle ci était peut etre trop technique pour la catégorie : "Utilisation de PrestaShop" https://www.prestashop.com/forums/topic/603890-multi-domaine-multistore-garder-lurl/ Je pose donc la même question avec mes avancés en esperant enfin avoir une réponse et des avis. J'ai donc plusieurs domaines ccTLD : .fr / .be / ... et un global (.org) Actuellemnt j'utilise le multistore : > un shop groupe ( Share customers / Share available quantities / Share orders) par domaine (donc en général avec 2 urls : avec www et sans ) > un plugin (Faktiva SEO ToolKit) pour les alternate href-lang afin d'eviter le duplicate content de google. > sitemap pour générer un site map pour chaque shopGroup. Par contre le multistore ralenti considérablement mon site (3000 produits) car tous les products (traductions / images) sont dupliqué en db! Je n'utilise pas du tout de fonctionnalité spécifique au multistore. Les produits sont les même. J'aimerais donc me débarrasser de la duplication de tous les produits. Je n'ai sauf preuve du contraire, pas vu la possibilité de faire ceci par défault. Donc le sujet de ma question est comment avoir les url ccTld et global tld configuré correctement sans avoir tous les produits dupliqués. Voici ma premiere idée (et la seule possibilité) sur laquelle j'aimerais avoir des avis : > Je rassemble les urls ccTld en tant qu'url dans le shop group par défaut. > Je retire la redirection : "Redirect to the canonical" URL dans "Preferences / SEO & URLs" (> Si nécessaire, je modifie le plugin hreflang afin de prendre toute les url enregistrés pour le shop group) et ne pas les considérer comme duplicate par google. > Je rajoute une redirection 301 depuis apache pour rediriger les url sans www, vers celle avec www. ( > Je modifie le plugin sitemap pour générer les urls en fonction de celle configuré dans le shop group par défaut.) Est ce pour vous la seule solution ou avez vous un autre moyen simple ? Voyez vous une conséquence bloquante à faire ceci ? Merci d'avance pour vos réponses. Link to comment Share on other sites More sharing options...
phliippeduverger Posted May 18, 2017 Author Share Posted May 18, 2017 Up !! Merci Link to comment Share on other sites More sharing options...
phliippeduverger Posted November 3, 2017 Author Share Posted November 3, 2017 Bon aucune réponse .... Voici comment j'ai fait. (avec version 1.7) : J'ai fait donc une migration et suis repassé sur une version sans multistore. Ce n'est pas une solution parfaite. Mais certainement un meilleur design que de dupliquer les produits .... (ou le site... ) juste pour avoir un "clone" sous un autre domaine. Je ne garantie pas le fonctionnement, mais en tout cas ca marche pour moi, et je n'ai plus à m'embeter a avoir les choses inutile du multistore Dans ma conf apache J'ai rajouter mod substitute : Voici ce qui redirige mon cc domaine nl vers le .be A adapter selon votre besoin. Attention à prendre en compte les canonical et href=lang <VirtualHost *:80> ServerName www.mywebsite.nl ServerAlias mywebsite.nl ProxyRequests On RequestHeader set Host "www.mywebsite.be" ProxyPreserveHost On <Location /> AddOutputFilterByType SUBSTITUTE text/html AddOutputFilterByType SUBSTITUTE text/javascript AddOutputFilterByType SUBSTITUTE text/json #AddOutputFilterByType SUBSTITUTE text/xml AddOutputFilterByType SUBSTITUTE application/json #AddOutputFilterByType SUBSTITUTE application/xml Substitute "s|mywebsite.be|mywebsite.nl|niq" #Substitute "s|canonical\" href=\"http://www.mywebsite.nl|canonical\" href=\"http://www.mywebsite.be|niq" #disable gzip RequestHeader unset Accept-Encoding </Location> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://www.mywebsite.be/ ProxyPassReverse / http://www.mywebsite.be/ ProxyPassReverseCookieDomain www.mywebsite.be www.mywebsite.nl </VirtualHost> J'ai du aussi modifier le fichier classes/link pour que les redirections externe (apres payment par exemple) fonctionnent : // If the module has its own route ... just use it ! if (Dispatcher::getInstance()->hasRoute('module-'.$module.'-'.$controller, $idLang, $idShop)) { return $this->getPageLink('module-'.$module.'-'.$controller, $ssl, $idLang, $params); } else { $returnVal = $url.Dispatcher::getInstance()->createUrl('module', $idLang, $params, $this->allow, '', $idShop); if (isset($_SERVER['HTTP_X_FORWARDED_SERVER']) ) { if (strpos($returnVal , 'mywebsite.be') !== false) { $returnVal = str_replace('www.mywebsite.be', $_SERVER['HTTP_X_FORWARDED_SERVER'], $returnVal ); } } return $returnVal; } 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