Jump to content

Migration d'une boutique d'un domaine vers un sous-domaine


Recommended Posts

Bonjour !

 

Nous sommes en train de mettre en place une plateforme de test pour notre site internet en Prestashop 1.5.4.1

J'ai procédé ainsi :

- déplacer tous les fichiers de domaine.com à test.domaine.com via FTP

- dupliquer la base de données

- modifier la table ps_shop_url pour changer le champ "domain" et "domain_ssl" de "domain.com" à "test.domain.com"

- changer le settings.inc.php pour modifier le "_DB_NAME_"

- voici le contenu de mon .htaccess modifié (désolé je n'ai pas réussi à le mettre dans une fenêtre de code) :

 

#MOD_PY_CONVERTURL_CHECKOK
#AddType x-mapp-php5 .php .php3 .php4 .htm .html
#AddHandler x-mapp-php5.4 .php .php3 .php4 .htm .html
#AddType x-mapp-php5.4 .php

RewriteEngine on
RewriteRule ^(.*) http://test.domain.com/$1 [QSA,L,R=301]
RewriteRule ^en\/(.*?)$ /$1 [R=301,L]
RewriteRule ^fr\/(.*?)$ /$1 [R=301,L]

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

# Images
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9]+)\-([0-9]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1-$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_HOST} ^test.domain.com$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/javascript "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType image/x-icon "access plus 1 year"
</IfModule>

FileETag INode MTime Size
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript
    </IfModule>
</IfModule>

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again


#MOD_PY_CONVERTURL_START

#MOD_PY_CONVERTURL_PROD

#MOD_PY_CONVERTURL_CAT

#MOD_PY_CONVERTURL_CMS

php_value max_input_vars 5000
php_value suhosin.post.max_vars 5000
php_value suhosin.request.max_vars 5000
# start ~ module watermark section
Options +FollowSymLinks
RewriteEngine On

RewriteRule [0-9/]+/[0-9]+\.jpg$ - [F]
# end ~ module watermark section

php_value memory_limit 2048M
php_value max_execution_time 120
 

 

 

En essayant d'aller sur test.domain.com (la boutique) ou test.domain.com/adminshop (le BO) j'ai Chrome qui m'indique :

 

ERR_TO_MANY_REDIRECTS

La page Web à l'adresse http://test.domain.com/adminshop a déclenché trop de redirections. Pour résoudre le problème, effacez les cookies de ce site ou autorisez les cookies tiers. Si le problème persiste, il peut être dû à une mauvaise configuration du serveur et n'être aucunement lié à votre ordinateur.

 

A noter que ce message apparaît quelque soit le navigateur, y compris après avoir supprimer tous les cookies.

 

Ai-je oublié une étape, ou voyez vous quelque chose qui ne semble pas correct dans le .htaccess ?

 

Merci d'avance pour votre aide !

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

Bonjour

 

Vous avez bien configurer le sous-domaine dans les DNS ?

Vous avez tenter de désactivé l'url rewriting et de réactivé pour régénérer le .htaccess ? vous pouvez sauvegarder ce .htaccess avant de le régénérer.

 

Bonjour Oron

 

J'ai établi la configuration du sous-domaine avec mon hébergeur. Les DNS ont bien été configuré.

Par contre, j'ai vu à droite à gauche cette solution de .htaccess à régénérer mais je n'ai pas accès à la partie admin du site. L'erreur se produit à la fois sur le front et le BO.

Supprimer le .htaccess, n'y change rien (je m'en doutais mais bon...)

Link to comment
Share on other sites

Bonjour,

 

Vérifie le chmod des dossiers peut être notamment celui du cache.

 

CDT

 

Bonjour Alexandre-KM.

J'ai effectué de nombreux changement, les droits ont été changé et l'erreur reste inchangé. Ne pouvant aller dans le BO je ne peux réinitialiser le .htaccess.

Peut-être qu'en le changeant par un .htaccess "de base" cela règlerait le problème. En existe-t-il un ?

 

Cordialement

Link to comment
Share on other sites

Bonjour,

 

J'ai "apparemment" réglé le problème des redirections. Le prestataire qui gère le serveur a jeté un œil et aurait juste commenté la ligne 7, à savoir :

RewriteRule ^(.*) http://test.domain.com/$1 [QSA,L,R=301]

 

Et effectivement, dans les logs du serveur, je suis passé d'une erreur 301 à une erreur 500 avec une page blanche.

 

Alors tous les tutos de page blanche indique qu'il faut passer le _PS_MODE_DEV_ à true dans le defines.inc.php

C'est ce que j'ai fait, mais j'ai toujours une page blanche avec juste ceci dans les logs d'accès :

 

[logs de localisation] - - [25/Sep/2015:12:03:32 +0200] "GET /adminshop/ HTTP/1.1" 500 242 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.25"

 

[logs de localisation] - - [25/Sep/2015:12:03:32 +0200] "GET /favicon.ico HTTP/1.1" 500 242 "http://test.domain.com/adminshop/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.25"

 

Par contre, je n'ai aucun log d'erreur via le serveur...

Avez-vous une idée pour débloquer la situation ? Merci d'avance !

 

Cordialement

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

  • 4 weeks later...

Bonjour

 

Si vous activé le mode debug  _PS_MODE_DEV_  et si c'est un problème de lecture d'un fichier un message s'affiche sur la page blanche

si vous n'avez pas de message sur la page blanche c'est pas un problème de lecture d'un fichier.

 

Les erreurs à consulter c'est le fichier error.log il s' affiche aussi dans le gestionnaire de votre hébergement.

le acces.log c'est juste pour savoir qui arrive sur votre page et quel navigateur, l'ip l'heure date

 

Est-ce que vous avez éditer un fichier avec le bloc note ou autre logiciel windows ? et enregistré en ASCII au lieu de UTF8 ?

Link to comment
Share on other sites

Bonjour,

 

Tout d'abord, merci pour votre retour !

 

Ensuite, effectivement j'ai pu retrouver deux lignes d'erreurs dans les logs serveur lorsque je tente d'accéder à http://test.domain.com :

 

[Thu Oct 22 10:37:16 2015] [error] [client xx.xxx.xxx.xx] PHP Parse error: syntax error, unexpected '}' in /var/www/domain/sd/test/classes/module/Module.php on line 1740
[Thu Oct 22 10:37:16 2015] [error] [client xx.xxx.xxx.xx] PHP Parse error: syntax error, unexpected '}' in /var/www/domain/sd/test/classes/module/Module.php on line 1740, referer: http://test.domain.com/
 
 
Du coup, je suis allé voir ce fichier à la ligne 1740. Je ne me rappelle pas y avoir touché mais peut-être qu'un prestataire l'a fait par le passé. Il y a une ligne en commentaire dans le foreach et le foreach fini par un if sans aucune action...
/**
 * Check employee permission for module (static method)
 * @param integer $id_module
 * @param array $variable (action)
 * @param object $employee
 * @return bool if module can be transplanted on hook
 */
public static function getPermissionStatic($id_module, $variable, $employee = null)
{
	if (!in_array($variable, array('view', 'configure')))
		return false;
	if (!$employee)
		$employee = Context::getContext()->employee;

	if ($employee->id_profile == _PS_ADMIN_PROFILE_)
		return true;

	if (!isset(self::$cache_permissions[$employee->id_profile]))
	{
		self::$cache_permissions[$employee->id_profile] = array();
		$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT `id_module`, `view`, `configure` FROM `'._DB_PREFIX_.'module_access` WHERE `id_profile` = '.(int)$employee->id_profile);
		foreach ($result as $row)
		{
			self::$cache_permissions[$employee->id_profile][$row['id_module']]['view'] = $row['view'];
			// self::$cache_permissions[$employee->id_profile][$row['id_module']]['configure'] = $row['configure'];
			if (Validate::isLoadedObject($context->employee) && !$moduleInstance->getPermission('view', $context->employee))
		}
	}

	if (!isset(self::$cache_permissions[$employee->id_profile][$id_module]))
		throw new PrestaShopException('No access reference in table module_access for id_module '.$id_module.'.');

	return (bool)self::$cache_permissions[$employee->id_profile][$id_module][$variable];
}

Je ne vois pas bien quoi faire... Une idée ?

 

 

Cordialement

 

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

Re-bonjour,

 

J'avance !

 

Décidément ce "if" me semblait étrange. J'ai donc remplacé la ligne 1739 :

	if (Validate::isLoadedObject($context->employee) && !$moduleInstance->getPermission('view', $context->employee)) 

par :

	if (Validate::isLoadedObject($context->employee) && !$moduleInstance->getPermission('view', $context->employee)) {} 

J'ai accès au Front et BO du site !

 

Maintenant il ne me reste qu'une étape : la privatisation du serveur de test.

J'ai rajouté au début de mon fichier .htaccess à la racine du sous-domaine :

AuthName "Merci de vous identifer :"
AuthType Basic
AuthUserFile "/var/www/domain/sd/test/ .htpasswd"
Require valid-user

Ensuite j'ai ajouté un fichier .htpasswd avec un identifiant et mdp :

Logtest:$1$dG5ZFmVA$QK55QuSUN35rGiXha9jt50

Lorsque je charge n'importe quelle page du sous-domaine j'ai bien un message qui me demande de m'identifier. Si je me trompes, l'accès est refusé pour mauvais mot de passe. Si je rentre le login/mdp correctement je tombe sur une page d'erreur qui m'indique :

 

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

 

Ai-je fait une erreur ou est-ce un problème de configuration serveur qui pourrait ne pas supporter cette méthode ?

 

Cordialement

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

Bonjour tout le monde !

 

A force de recherche on finit par trouver !

Il y avait juste un espace en trop...

AuthUserFile "/var/www/domain/sd/test/ .htpasswd"

Au lieu de :

AuthUserFile "/var/www/domain/sd/test/.htpasswd"

Merci pour vos interventions qui m'ont aiguillées vers la solution !

 

Cordialement

Edited by Thomas EMP (see edit history)
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...