INSTALL INSTRUCTIONS
====================
0. INSTALL THE MODULE
*Put multisite_manager directory in your modules directory--most likely
you will just put it in the master site's modules directory.
*For those running versions less than Drupal 5.7
----------------------------------------
If you will be configuring multisite_manager to create new
databases (rather than just alter table prefixes) you will need to
update your core drupal files with the latest patch in this bug
report:
http://drupal.org/node/168315
Assuming you will make all new sites available at /site/{shortname}/
1. PUT SOMETHING LIKE THIS IN YOUR APACHE CONFIG:
AliasMatch ^/site/\w+/(.*) /var/www/drupal/$1
DocumentRoot /var/www/drupal/
WARNING:CLEAN URLS demand a much more complicated setup with a bunch of rewrite rules.
See the Appendix in this file for details
2. Install the module in your main drupal site.
In the Admin/Site configuration/Multisite Manager settings.
Set the Table prefix, Database name and Link defaults to how you
intend to run your multisite setup.
Save the configuration.
Click on the 'settings.php help' tab. This will give you some
suggested code to include in your generalized settings.php file.
3. Multisite manager does NOT create a settings.php file
for each site. Instead, we make a single settings.php file, which
will work for all of them. That means it should be added to
PUT THE SUGGESTED CODE IN YOUR ./sites/default/settings.php
or better at ./sites/www.example.com.site/settings.php
If you're a PHP hacker, feel free to poke at it and make it work
how you want it to. The general idea, is that based on the URL
request, we decide which database/prefix, etc to use.
----CODE BEGIN-----
$requri = explode('/', request_uri());
if (sizeof($requri) >1 && $requri[1]=='site' && $requri[2] != '') {
$my_site_base = $requri[2];
#this will be the database shared between the main site and the shared sites
$db_url = 'mysql://username:password@localhost/database';
$db_prefix = $my_site_base."_";
$base_url = "http://www.example.com/site/$my_site_base"; // NO trailing slash!
}
----CODE END-------
4. Any modules required for profile selections must be installed on
BOTH the main site's modules directory AND the subsidiary site module
directory (a symlink will do just fine);
the former in order to install, the latter in order to run.
The easiest way to achieve this is to put those modules in the sites/all/modules/ directory.
APPENDIX:
=========
How to get CLEAN URLS working with apache and multisite setup:
It's gross! I told you so!!!!!
DocumentRoot /usr/local/share/sandboxes/common/drupal/drupal/
# Welcome to the Ugliest Rewrite Rules Evar(tm)!
# Here's the jist:
# 1. AliasMatch will set the file context without passing a different URL to Drupal
# Therefore index.php must be matched outside of Rewrite rules
# 2. Rewrite is used ONLY to forward URLs of the form /xxx -> index.php?q=/xxx
#
# If we took Rewrite rules outside of the Location contexts so its in per-server
# processing, we might be able to simplify this. We would need option 'PT' for
# passthrough and then some AliasMatch record AFTER the rewrite rules.
# If you figure it out, then go for it. Otherwise, what ain't broken...
AliasMatch ^/site/\w+/(\w+).php /var/www/drupal/$1.php
AliasMatch ^/site/\w+/(modules|misc|files|themes|sites)/(.*)$ /var/www/drupal/$1/$2
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^var/www/drupal(.*)$ index.php?q=$1 [L,QSA]
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/site/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/var/www/drupal/site/(\w+)(/)?(.*)$ http://www.example.com/site/$1/index.php?q=$3 [L,QSA]
ALTERNATE for HTACCESS File
=========
This is an in-development configuration that works through only rewrites in a
local .htaccess file
1. create a symlink called 'site' to drupal's home directory, like this:
% cd /var/www/drupal
% ln -s . site
2. Add the following to the top of the .htaccess file in the drupal directory
RewriteEngine on
#file access
RewriteRule ^\w+/(modules|misc|files|themes|sites)(.*)$ ./$1$2 [L]
RewriteRule ^/(modules|misc|files|themes|sites)(.*)$ ./$1$2 [L]
#special php scripts
RewriteRule ^\w+/(update.php|install.php|index.php)(.*)$ ./$1$2 [L,QSA]
#site sub-section
RewriteCond %{REQUEST_FILENAME} ^/var/www/drupal/site/.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^\w+(/)?(.*)$ index.php?q=$2 [L,QSA]
#### clean url stuff should be further down in default file