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= --account-name=admin --account-pass=$passwordadmindrupal$
et voila ! normalement à ce stade, vous avez un copie du site fonctionnellement, sans données dedans.