Jump to content
phliippeduverger

Multistore sans dupliquer les produits en db

Recommended Posts

 

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"


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. 

 

Share this post


Link to post
Share on other sites

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;
        }





 

 

 

 

 

 

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