Jump to content

[Tutorial] Changer repertoire installation PS 1.6 et redirection .htaccess


Recommended Posts

Après avoir galéré pour changer le répertoire d'installation de mon prestashop 1.6, j'ai décidé de poster ce petit tuto qui j'espère va en aider d'autres. Je ne suis pas du tout expert alors si vous avez des suggestions ou améliorations,....
 
Comment passer de www/dossier1 à www/dossier2
(www est le root sur OVH, il peut être remplacé par autre chose ... root...etc)
 
Et
 
faire en sorte que l'url soit nomdedomaine/dossier2

  •  
  • aller dans préférences > SEO &URLS
  • remplacer à la ligne chemin de base par dossier2
  • désactiver les urls simplifiées (par précaution mais je n'en suis pas sur)
  • se connecter en ftp et remplacer dossier1 par dossier2
  • vider le cache (/cache/smarty/cache & /cache/smarty/compile
    Supprimer tous les fichiers et dossiers sauf le index.php s'il y est.)

Le nom de dossier est maintenant changé. (si besoin, vider le cache de son navigateur ou plus simple faire une navigation privée)
 
Maintenant pour modifier l'url

  •  
  • dans le dossier www/ (ou root....) créer un fichier .htaccess comportant
#ensemble de lignes nécessaires sur OVH
Options -Indexes
Options -Multiviews
Options +FollowSymLinks
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5

#redirection vers sous-dossier
RewriteEngine On
RewriteCond %{REQUEST_URI} !^dossier2
RewriteRule ^(.*)$ http://www.nomdedomaine.com/dossier2/$1 [R=301,L]

 
 
et voila, en théorie cela fonctionne! :)

 

et pour rappel lors du changement de base

 

 

Sur votre nouveau serveur ou hébergement, une fois le domaine créé, la base de donnée créée, l'utilisateur de la base de donnée créé, sont mot de passe créé.

 

Importer le fichier de la base de donnée que vous avez exporter en *.sql.bz2 dans la nouvelle base de donnée.

 

Les fichiers et dossiers que vous avez téléchargé via filezilla vous les retransférez avec filezilla sur votre nouvel hébergement créé.

 

Dans le dossier /config/ le fichier settings.inc.php vous modifiez :

 

define('_DB_SERVER_', 'url de votre serveur de base de donnée ou localhost');

define('_DB_NAME_', 'Nom de la base de donnée');
define('_DB_USER_', 'Login de l'utilisateur de la base de donnée');

define('_DB_PASSWD_', 'Le mot de passe de l'utilisateur de la base de donnée');

 

C'est tout ce que vous modifier dans votre settings.inc.php

 

sur la 1.4.x /tools/smarty/cache & /tools/smarty/compile
Supprimer tous les fichiers sauf le index.php s'il y est.

sur la 1.5.x 1.6.x  /cache/smarty/cache & /cache/smarty/compile
Supprimer tous les fichiers et dossiers sauf le index.php s'il y est.
 

et un bon CTRL+F5 pour vider la cache navigateur et les cookies

Edited by JeanM (see edit history)
Link to comment
Share on other sites

  • 5 weeks later...

Bonjour

Merci pour ces infos.

Sont-elles valables pour le changement répertoire, pour remonter au dossier racine, à savoir :

http://www.elansud.com/boutique
vers
http://www.elansud.com/

 

A) Si j'ai bien compris (dites-moi si je me trompe…) :

  • aller dans préférences > SEO &URLS
  • enlever boutique et ne garder que le / est-ce bien cela ?
  • désactiver les urls simplifiées (par précaution mais je n'en suis pas sur) >> en êtes-vous sûr aujourd'hui ?
  • se connecter en ftp et tout faire remonter d'un niveau (dossiers et fichiers)
  • vider le cache (/cache/smarty/cache & /cache/smarty/compile >> en gardant les pages index.php

B ) Dans le fichier .htaccesss :

 

#ensemble de lignes nécessaires sur OVH
Options -Indexes
Options -Multiviews
Options +FollowSymLinks
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5

#redirection vers sous-dossier
RewriteEngine On
RewriteCond %{REQUEST_URI} !^dossier2 =>> ici, comment mentionner que c'est au même niveau ?
RewriteRule ^(.*)$ http://www.nomdedomaine.com/dossier2/$1 [R=301,L] =>> ici, comment mentionner que c'est à la racine ?

 

C) Pour la base de données, y a-t-il d'autres changements ? C'est sur le même serveur.

 

Ce problème est rencontré par de nombreuses personnes et je n'ai pas trouvé d'explications simples et accessibles sur le forum…

Pouvez-vous confirmer ?

 

Merci pour votre éclairage…

Link to comment
Share on other sites

Bonjour,

 

Attention, je ne suis absolument pas un expert du domaine. 

Ce que j'ai indiqué marche et a été testé dans mon cas de figure. Par contre, je ne peux pas vous garantir que cela fonctionne dans votre exemple.

 

Avez vous un .htaccess?

j'ai besoin de plus de détail sur votre cas de figure car ce n'est pas forcement nécessaire de modifier la base de donnée car pour vous, vous ne souhaitez faire qu'une redirection et pas un changement de nom de dossier.

 

 

Néanmoins, je ne pense pas que vous deviez modifier le .htaccess car à votre niveau, la redirection est réalisée par prestashop et non plus par l'hebergeur.

Faitez bien une sauvegarde et procédez par étape en sachant que la modification du .htaccess et quasi immédiate mais pour le reste c'est un peu plus long.

Faitez bien en sorte de vider le cache de son navigateur ou plus simple faire une navigation privée.

  • aller dans préférences > SEO &URLS
  • enlever boutique et ne garder que le / est-ce bien cela ? si vous pouvez me dire ce que vous avez précisement dans prestashop?
  • désactiver les urls simplifiées (par précaution mais je n'en suis pas sur) >> en êtes-vous sûr aujourd'hui ? non
  • se connecter en ftp et tout faire remonter d'un niveau (dossiers et fichiers)
  • vider le cache (/cache/smarty/cache & /cache/smarty/compile >> en gardant les pages index.php

B ) Dans le fichier .htaccesss :

 

#ensemble de lignes nécessaires sur OVH
Options -Indexes
Options -Multiviews
Options +FollowSymLinks
SetEnv REGISTER_GLOBALS 0
SetEnv PHP_VER 5

#redirection vers sous-dossier
RewriteEngine On
RewriteCond %{REQUEST_URI} !^dossier2 =>> ici, comment mentionner que c'est au même niveau ?
RewriteRule ^(.*)$ http://www.nomdedomaine.com/dossier2/$1 [R=301,L] =>> ici, comment mentionner que c'est à la racine ?

 

Voici la règle que j'ai trouvé sur ovh.com mais en l'occurence ce n'est pas votre cas!

#Rediriger vers un dossier en particulier sans afficher le dossier concerné

RewriteEngine on

Rewritecond %{HTTP_HOST} ^exemple.com
Rewritecond %{REQUEST_URI} !^/MonSite
Rewriterule ^(.*)$ /MonSite/

 

 

C) Pour la base de données, y a-t-il d'autres changements ? C'est sur le même serveur. 

 

Ce problème est rencontré par de nombreuses personnes et je n'ai pas trouvé d'explications simples et accessibles sur le forum…

Pouvez-vous confirmer ?

 

Merci pour votre éclairage…

Link to comment
Share on other sites

  • 2 months later...

Bonjour

 

Rencontrant le même problème pour renommer mon dossier "PrestaShop", j'ai suivi votre procédure et cela fonctionne en Frontoffice mais en revanche, impossible d'accéder au backoffice. il me parle de problème de redirection multiple.

Avez-vous eu le même souci et connaissez-vous une solution.

 

Merci par avance

 

Pat

Link to comment
Share on other sites

Bonjour JeanM et merci pour votre réactivité car je galère.

 

Pour résumé, le site a été conçu avec Prestahop 1.6 et est hébergé chez ovh.

Le nom de domaine est www.facefoodpizza.fr et celui-ci est redirigé vers http://facefoodpizza.fr/PrestaShop

 

Je veux tout simplement changer "PrestaShop" par "Pizza".

 

J'ai donc tenté votre solution mais dès que j'enregistre le nouveau chemin (dans Préférences/SEO URL), ça bug et j'ai ce message :

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/facefood/www/admin0/index.php on line 54

 

Je suis allée voir ce fichier et à la ligne 54, il n'y a que cette ligne :

Dispatcher::getInstance()->dispatch();

 

 

Merci encore

Link to comment
Share on other sites

Attention le www devant le ndd est important.

Vous voulez le garder ou pas?

 

Enfin, si vous avez suivi ces étapes 1 par 1, vous devriez pas revenir dessus. (parce que la, votre ndd contient bien pizza)

 

La page "avis" présente également une boucle de redirection

http://www.facefoodpizza.fr/Pizza/PrestaShop2/index.php

 

Vous deviez avoir plusieurs répertoires d'installation. Le plus simple est peut-être de repartir sur une installation propre?

 

Sinon, contactez-moi par mail (vous posterez la solution ici par la suite)

http://www.ibeaute.net/resultat-astuce-cosmetic/contactez-nous

Link to comment
Share on other sites

J'ai réussi !

J'ai tout recommencer à zéro et vérifié dans la base de données.

J'ai vidé tout le cache et effacé l'historique du navigateur.

 

Et ça marche ! je ne sais pas ce qui manquait la 1ère fois.

Bonjour

 

Après chaque modification importante et notamment changement de répertoire ou de nom, vider le cache navigateur, cookies et historique. Ainsi que cache smarty.

  • Like 1
Link to comment
Share on other sites

  • 7 months later...

Bonjour à tous,

 

J'ai un petit souci. La personne avant moi avait fait une redirection vers le dossier "shop" où se trouve la boutique Prestashop. Aujourd'hui, on voudrait changer ce "shop" par "eclairage-LED". J'ai suivi toutes les étapes décrites au-dessus, cela met bien le "eclairage-LED" mais ça rajoute ensuite le "shop". Donc au lieu d'avoir "www.deneoled.com/eclairage-LED", j'ai "www.deneoled.com/eclairage-LED/shop"...

 

Le site est hébergé chez Amen, j'ai fouillé dans tous les paramètres, je n'ai pas trouvé où cette redirection a été faite... Auriez-vous une idée ?

 

Merci d'avance ;)

Link to comment
Share on other sites

  • 1 year later...
  • 2 years later...

Bonjour !

Je déterre ce post, car j'ai le même souci avec 1.7.

Mon site est dans le répertoire /prestashop1.7/, impossible de le faire fonctionner sous /toto/.

- j'ai bien mis à jour l'URI dans la table ps_shop_url (qui pointe maintenant vers /toto/);

- j'ai désactivé les URLs simplifiées 

- j'ai vidé les caches du site web et de mon navigateur

- j'ai vérifié le fichier /toto/app/config/parameters.php avec les infos de connection à la base de donnée, mais tout est ok.

- tous les fichiers ont les bons droits.

Rien n'y fait, je tourne ça dans tous les sens. Quand je renomme le répertoire /toto/ en /prestashop1.7/ (moyennant les actions ci-dessus), tout refonctionne.

HELP please 

Link to comment
Share on other sites

Il faut vider le cache également en supprimant tous les dossiers et fichiers qui se trouvent dans /var/cache pour que les modifications que vous avez faites en base de données, soient à jour dans le cache. Prestashop va régénérer ces fichiers automatiquement après leur suppression.

Donc en résumé :

  1. Renommer le dossier qui contient prestashop en /toto/ au lieu de /prestashop1.7/
  2. Mettre à jour la table ps_shop_url
  3. Supprimer le fichier .htaccess, il sera régénéré lorsque vous réactiverez les URL simplifiées
  4. Supprimer tous les dossiers et fichiers dans /var/cache, ils seront régénérés automatiquement avec les nouvelles valeurs de la table ps_shop_url

Je pense n'avoir rien oublié

Link to comment
Share on other sites

2 hours ago, Janett said:

Il faut vider le cache également en supprimant tous les dossiers et fichiers qui se trouvent dans /var/cache pour que les modifications que vous avez faites en base de données, soient à jour dans le cache. Prestashop va régénérer ces fichiers automatiquement après leur suppression.

Donc en résumé :

  1. Renommer le dossier qui contient prestashop en /toto/ au lieu de /prestashop1.7/
  2. Mettre à jour la table ps_shop_url
  3. Supprimer le fichier .htaccess, il sera régénéré lorsque vous réactiverez les URL simplifiées
  4. Supprimer tous les dossiers et fichiers dans /var/cache, ils seront régénérés automatiquement avec les nouvelles valeurs de la table ps_shop_url

Je pense n'avoir rien oublié

Bonsoir Janett,

Merci pour ce retour.

Je précise qu'il s'agit d'une installation sur un NAS perso.

J'ai résolu mon problème, qui était en fait lié à une question de droits d'accès / compte utilisateur dans la base de donnée. Mon prestashop provenait d'un package Synology qui utilise par défaut le compte root, ce qui peut poser problème si plusieurs lignes existent avec différents noms d'hôte (il va en fait ne lire que la première ligne). Dans mon cas, la solution a consister à procéder comme suit :

CREATE USER 'mon_user'@'%' IDENTIFIED BY 'mon_pass';
GRANT ALL PRIVILEGES ON *.* TO 'mon_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES

et oh magique, tout fonctionne nickel chrome.

A noter que cela peut concerner également une installation from scratch du package prestashop1.7, car, sauf erreur de ma part, cet aspect n'est pas clairement indiqué (je suppose que la plupart des gens utilisent un fournisseur d'accès qui fournit login et mdp à la base de donnée).

Tout cela est très bien expliqué dans le post  https://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server/1559992

En tous cas, merci encore, et j'espère que mon retour d'expérience servira à la collectivité.

Emmanuel

Mon site en cours de développement : ergoblue.eu

Link to comment
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...