Running multiple sites on a single domain

This page describes how to run multiple websites in separate sub-folders on a single domain. In this scenario, you do not need to obtain new domains for each site.

Example - Installing two sites onto a single domain

  1. Install a Kentico web project to the following folder: C:\inetpub\wwwroot\mykenticofolder.
    • In the installer, choose Custom installation and Built-in web server in Visual Studio (does not create a virtual directory).

     

  2. Open your Internet Information Services (IIS) Manager console (Start -> Control Panel -> Administrative tools -> Internet Information Services (IIS) Manager).

  3. Create a new virtual directory named mykenticoweb.
    • The name of the virtual directory must be different than the folder where you installed the web project.
    • Set the Physical path to a non-website folder in the root of a local disk. Ideally, create an empty folder for this purpose, for example: c:\empty

  4. Create two IIS applications under mykenticoweb named web1 and web2.
    • Set the Physical path of both applications to the web site folder of the installed project (C:\inetpub\wwwroot\mykenticofolder\CMS in this example).
    • Set the application pool according to the type that you specified in the installation of the Kentico web project.

  5. Open your browser and type in either http://localhost/mykenticoweb/web1 or http://localhost/mykenticoweb/web2.

  6. Log in to the Kentico administration interface and open the Sites application.

  7. Install both sites. Set the Site domain name fields:

    • Website 1: localhost/mykenticoweb/web1

    • Website 2: localhost/mykenticoweb/web2

Now when you go to http://localhost/mykenticoweb/web1, you will see website 1. If you go to http://localhost/mykenticoweb/web2, you will see website 2.

 

Synchronizing global data for the sites

To ensure the synchronization of settings and global objects between the two sites, you need to set up a Web farm environment.

  1. Add the following keys to the <appSettings> section of the web.config file in the installation directory shared by both websites:

    <add key="CMSWebFarmEnabled" value="true"/>
    <add key="CMSWebFarmSynchronizeFiles" value="false" />
    <add key="CMSAllowLocalConfigKeys" value="true" />
    
    <add key="/mykenticoweb/web1:CMSWebFarmServerName" value="server1" />
    <add key="/mykenticoweb/web2:CMSWebFarmServerName" value="server2" />

    This enables web farms in general and disables synchronization of files, which is not needed since the applications already use the same physical folder. Notice that each application has a different web farm server name specified via a prefix in the name of the CMSWebFarmServerName key. This prefix must match the path that you set for the corresponding application in IIS, including the virtual directory.



  2. Log in to the Kentico administration interface on one of the sites.
  3. Open the Web farms application.
  4. Create a web farm server for each application.
  5. To prevent potential problems with conflicts during Smart search indexing, specify a different physical folder for each application's search index files through the following web.config keys:

    <add key="/mykenticoweb/web1:CMSSearchIndexPath" value="App_Data\CMSModules\SmartSearch\Web1\" />
    <add key="/mykenticoweb/web2:CMSSearchIndexPath" value="App_Data\CMSModules\SmartSearch\Web2\" />

Your websites should now work without any issues.