I am trying to do multi-site the following way:




 $sites['domain.com.site1'] = 'default';
 $sites['domain.com.site2'] = 'site2';

I then went into my drupal root and did:

ln -s . site1
ln -s . site2

Is this the correct way of doing this? It appears to work, but I am not sure if symlinking is the proper way.

  • Shouldn't that be: $sites['domain.com.site1'] = 'site1'; (not default) $sites['domain.com.site2'] = 'site2'; ? Commented Mar 24, 2014 at 23:21
  • Check out: drupal.org/documentation/install/multi-site which answers your question. From # 5: "Make symbolic links if you are using a subdirectory such as example.com/subdir and not a subdomain such as subd.example.com (see the subdirectory multi-site section below for details). "
    – Screenack
    Commented Aug 4, 2015 at 10:26

2 Answers 2


Yes- you did this right :)

cp example.sites.php as sites.php, set the sites array, set the symlink, and you're set!

  • Are there are security issues with the fact that you can so /site1/site1/site1...? Commented Jul 24, 2013 at 3:21
  • I'm not quite sure what you mean- all sites should be located in the /sites/ directory and have a unique settings.php... This shouldn't pose a security risk.
    – adam_bear
    Commented Jul 24, 2013 at 3:56
  • I mean I can do domain.com/site1/site1/site1 because of the symlink to its parent directory. Commented Jul 24, 2013 at 12:57
  • You're still only accessing the parent directory- how would this pose a risk?
    – adam_bear
    Commented Jul 24, 2013 at 16:51
  • @ChrisMuench security is what I was thinking too when I saw this. I haven't spent time on it, but I expect there very likely are implications here. Check rewrite rules for things like protecting private file directories carefully, and post any worrying findings. Circular symlinks are almost always a bad idea.
    – mc0e
    Commented Dec 17, 2014 at 6:51

You can set the sites array in sites.php as:

$sites['multi.devs'] = 'multi.dev';
$sites['sub1.multi.devs'] = 'multi.devs';
$sites['sub2.multi.devs'] = 'multi.devs';

and in your hosts file you can set the hostname as       multi.devs       sub1.multi.devs       sub2.multi.devs

Also need to entry them in httpd-vhost.conf file. Like:

<VirtualHost *:80>
    DocumentRoot "projects/drupal_multi/"
    ServerName   multi.devs
    ErrorLog    "logs/error.log"
    CustomLog   "logs/access.log" common

You need to do this for each of sub site. DocumentRoot will be the same the server name will be change for each of them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.