Transformer un drupal7 mono-site en multi-site avec des sous-répertoires

Voici la manière de transformer un drupal monosite en drupal multisite, sous la forme :

http://www.monsite.fr qui devient http://www.monsite.fr/site1 et http://www.monsite.fr/site2
(et non pas http://site1.monsite.fr et http://site2.monsite.fr – autre cas qui n’est pas traité ici).

1/ La conf d’apache
après le « DocumentRoot » du serveur :
Alias /site1 /var/www/drupalroot
Alias /site2 /var/www/drupalroot

bien entendu, il faut mettre le bon répertoire, celui qui pointe sur la racine de Drupal

2/ le fichier .htaccess dans /var/www/drupalroot
# site1 site
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/site1/(.*)$
RewriteRule ^(.*)$ /site1/index.php [L,QSA]

# site2 site
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/site2/(.*)$
RewriteRule ^(.*)$ /site2/index.php [L,QSA]

# default site
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

3/ le répertoire « sites »
à la racine de drupal faire:

cd sites
mv default localhost.site1
mkdir localhost.site2
ln -s localhost.site1 site1
ln -s localhost.site2 site2
cd site2
mkdir files
cp ../site1/settings.php
cp ../site1/default.settings.php
chmod 777 files settings.php

cd .  #la racine de Drupal
ln -s . site2
ln -s . site1

4/ le fichier sites.php
ici c’est un peu étrange, mais c’est « Drupal » :  http://www.monsite.fr/site2 et  http://www.monsite.fr/site1 doivent s’écrire  www.monsite.fr.site1 et  www.monsite.fr.site2
On enlève le http, et le / devient un .

<?php
$sites = array(
"www.monsite.fr.site1" => "site1",
"www.monsite.fr.site2" => "site2",
);

changer le base_url dans sites/site1/settings.php
$base_url = ‘https://www.monsite.fr/site1‘;

A ce stade l’ancien site doit fonctionner sous la nouvelle URL, mais le nouveau n’est pas encore prêt

5/ création de la nouvelle base
créer une nouvelle base de donnée vierge : site2_dev

6/ fichiers sites/site2/settings.php

$base_url = ‘https://www.monsite.fr/site2‘;
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'site2_dev',

(Attention, dans le cas présent, on est en multibase, d’ou les 2 ‘default’ qui s’enchainent)

7/ installer drupal pour créer la base
https://www.monsite.fr/site2/install.php
suivre les étapes « bêtement ».

Sinon on peut tenter un drush :

drush si ftv_site1_back --notify -y --db-url=mysql://$username$:$password$@localhost/site2_dev --account-mail=admin@local.host --account-name=admin --account-pass=$passwordadmindrupal$

et voila ! normalement à ce stade, vous avez un copie du site fonctionnellement, sans données dedans.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *