Set up Magento Multi-Site, Multi-Domain Setup

Maybe not many people know that we can set up many domains and sites with just one magento installation, we will almost have many different stores.

One of Magento’s greatest strengths is its capabilities for scaling to support multi-store and multi-language retailing all from the same backend. In this tutorial, we will be showing you how to take advantage of Magento’s scalability by creating multiple websites with unique domain names sharing the same product catalog. (***NOTE: Each store can also be configured to offer a unique product catalog as well.)
For this example, we’ll be attempting to set up domain1.com, domain2.com and domain3.com.
Generally, Magento is installed into the folder /var/www/http, as per the Magento Installation Guide, and you can find more information related to the initial setup and configuration of any Magento installation there. We aren’t going to through an full blown installation right now though, and for our purposes, we are going to presume that the Magento instance has already been installed in the server.
We’ll be dividing the process into steps based on the areas of configuration we will need to deal with–namely, Categories, Store Configuration in Magento Admin, Store Configuration in the Server.

1: Categories

First, will need to create our Categories.  Since all three websites will be sharing the same catalog, we will be using the default root Category in Catalog -> Categories -> Manage Categories and will be creating our categories under that root category (i.e. Clothing, Electronics, etc.).

image

These categories (Clothing, Electronics) should be set as both “Is Active” from the General Information tab and “Is Anchor” from the Display Settings tab for them to appear on the frontend of your Magento shop.  (***NOTE: If the websites will not be sharing the same catalog, a Root Category must be created for each website.  Thus, if there are 3 websites, there will be 3 Root Categories with subcategories under them.)

2: Store Configuration in the Magento Admin

1. Now that we have created our Categories, it’s time to create our websites by going to System -> Manage Storesand clicking the “Create Website” button.

  • Name – domain name of our new website
  • Code – a parameter that will be used in configuring the Apache web server to point to that particular domain name

 

image

2. Once the website has been created, we’ll create the store corresponding to this website by clicking on the “Create Store” button in System -> Manage Stores.

 

  • Website – website to which this store will be associated
  • Name – the same as the website name
  • Root Category – the root category that will be used for this store. (Refer to Step 1 for Details)

 

image

3. Then, we create the store view which is the interface that the customer will be able to access on the frontend.  Click the “Create Store View” button in System -> Manage Stores.

 

    • Store – store to which this view will be associated
    • Name – name of this store view (i.e. English Version, German Version, etc.)
    • Code – code for this store view
    • Status – if enabled, this store view will be accessible from our frontend, otherwise, it will not be accessible

 

image

4. After the Store has been created, we need to configure the Unsecure Base URL and Secure Base URL under System -> Configuration -> General -> Web.  Before we set their respective base URLs, we first need to ensure that the configuration scope is set to the domain1.com website to define which site we are working on.

image

Then, we modify the base URLs for both Unsecure:

image

and Secure:

image

with the corresponding domain name by unchecking the ”Use default [STORE VIEW]” checkbox and then save the configuration.

5. Now we just repeat Steps 2-4 for the other two websites, domain2.com and domain3.com by replacing the fields with their respective information.

3: Store Configuration in the Server

1. Now we re-configure the Apache configuration file, httpd.conf, for all domains to set theDocumentRoot to our Magento directory.  In this case, the directory is /var/www/http

<VirtualHost *:80>
    ServerAdmin webmaster@domain1.com
    DocumentRoot /var/www/http
    ServerName domain0.com
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@domain2.com
    DocumentRoot /var/www/http
    ServerName domain1.com
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@domain3.com
    DocumentRoot /var/www/http
    ServerName domai2.com
</VirtualHost>

2. Edit the .htaccess file at /var/www/http/.htaccess and add the following lines below:

SetEnvIf Host www\.domain1\.com MAGE_RUN_CODE=domain1_com
SetEnvIf Host www\.domain1\.com MAGE_RUN_TYPE=website
SetEnvIf Host ^domain1\.com MAGE_RUN_CODE=domain1_com
SetEnvIf Host ^domain1\.com MAGE_RUN_TYPE=website

SetEnvIf Host www\.domain2\.com MAGE_RUN_CODE=domain2_com
SetEnvIf Host www\.domain2\.com MAGE_RUN_TYPE=website
SetEnvIf Host ^domain2\.com MAGE_RUN_CODE=domain2_com
SetEnvIf Host ^domain2\.com MAGE_RUN_TYPE=website

SetEnvIf Host www\.domain3\.com MAGE_RUN_CODE=domain3_com
SetEnvIf Host www\.domain3\.com MAGE_RUN_TYPE=website
SetEnvIf Host ^domain3\.com MAGE_RUN_CODE=domain3_com
SetEnvIf Host ^domain3\.com MAGE_RUN_TYPE=website

 

 

3. Restart Apache Server

If you are on a Red Hat based distribution, you’ll be able to type service apache restart.  For other distributions, you’ll want to type apachectl restart.  (***NOTE: The second option here is different than “apachectl graceful” which will run a graceful restart and reload configuration files, without terminating current connections.  We don’t have any visitors to our site yet, so it’s okay to do a “apachectl restart”.)

 

4: We’re Ready to Go!

 

After we’ve complete all of these steps we should now see all 3 domains in our backend:

image

All that’s left now is to add products to the catalog and give each site a custom theme if we wish to do so.  Many people are taking advantage of Magento’s powerful multi-store functionality, whether it’s to set up stores with multiple languages, different catalogs and even the same catalogs (as in our example) with different front ends as a marketing vehicle.  No matter which you decide to use Magento’s powerful features for, we hope this post will provide a good starting point to help you get there!


Posted

in

by

Tags:

Comments

5 responses to “Set up Magento Multi-Site, Multi-Domain Setup”

  1. Ser Avatar

    You are probably going to get diefnrfet answers from diefnrfet people and keep in mind some of them may be trying to promote affiliate links where they get paid if you buy. With shared hosting you will always have some issues depending on where you get your hosting at. I’ts not a perfect system. I currently have my sites at bluehost, but it can be really slow sometimes. However, It’s rare that I have down time. Just try talking to people who actually use some of the main hosting providers and see what they are saying about it. Take a chance and just pick one.

  2. magentohostsolution Avatar
    magentohostsolution

    You use bluehost and you meet problem with it. You know that ‘s why I don’t have bluehost in my suggestion list.

  3. Beafully Swiss Avatar

    It ‘s simple instruction. Thanks guy

  4. Paul Stanely Avatar

    Thanks for sharing this tutorial.
    I was looking the Store Configuration in Server.
    I need to re-configure the Apache Configuration file.

    To enhance the functionality of the multi-store feature of Magento, I use GeoIP Multi Store Redirect extension released by FME, which detects the Geo-location of the incoming visitors based on their IP address and redirect them to the appropriate store.

  5. Din Avatar
    Din

    GeoIP Store & Currency Switcher plugin for Magento by MagestyApps
    https://www.magestyapps.com/magento-extensions/geoip-store-switcher.html

    – Automatically switches language, website, currency and tax rate depending on visitor’s country
    – Restricts access for specific IP addresses and/or countries
    – Retrieves customer’s location using MaxMind GeoIP2 database