Set up multiple websites with Apache

We assume that:

If necessary, copy the existing index.php entry point script for your website or store view and add to it the following:

  • You are working on a development machine (laptop, virtual machine, and so on)

    Additional tasks might be required to deploy multiple websites in a hosted environment; check with your hosting provider for more information.

    Additional tasks are required to set up Adobe Commerce on cloud infrastructure. After you complete the tasks discussed in this topic, see Set up multiple websites or stores in the Commerce on Cloud Infrastructure guide.

  • You use one virtual host per website; the virtual host configuration file is /etc/httpd/httpd.conf

    Different versions of Apache on different operating systems set up virtual hosts differently. Consult the Apache documentation or a network administrator if you are not sure how to set up a virtual host.

  • The Commerce software is installed in /var/www/html/magento2

  • You have two websites other than the default:

    • french.mysite.mg with website code french and store view code fr
    • german.mysite.mg with website code german and store view code de

Roadmap for setting up multiple websites with Apache

Setting up multiple stores consists of the following tasks:

  1. Set up websites, stores, and store views in the Admin.
  2. Create one Apache virtual host per Commerce website.

Step 1: Create websites, stores, and store views in the Admin

See Set up multiple websites, stores, and store views in the Admin.

Step 2: Create Apache virtual hosts

This section discusses how to set values for MAGE_RUN_TYPE and MAGE_RUN_CODE using the Apache server variable SetEnvIf in a virtual host.

For more information about SetEnvIf, see:

To create Apache virtual hosts:

  1. As a user with root privileges, open the virtual host configuration file in a text editor.

    For example, open /etc/httpd/conf/httpd.conf

  2. Locate the section starting with <VirtualHost *:80>.

  3. Create the following virtual hosts after any existing virtual hosts:

    code language-conf
    <VirtualHost *:80>
       ServerName          mysite.mg
       DocumentRoot        /var/www/html/magento2/pub/
    </VirtualHost>
    
    <VirtualHost *:80>
       ServerName          french.mysite.mg
       DocumentRoot        /var/www/html/magento2/pub/
       SetEnv MAGE_RUN_CODE "french"
       SetEnv MAGE_RUN_TYPE "website"
    </VirtualHost>
    
    <VirtualHost *:80>
       ServerName          german.mysite.mg
       DocumentRoot        /var/www/html/magento2/pub/
       SetEnv MAGE_RUN_CODE "german"
       SetEnv MAGE_RUN_TYPE "website"
    </VirtualHost>
    
  4. Save your changes to httpd.conf and exit the text editor.

  5. Restart Apache:

    • CentOS: service httpd restart
    • Ubuntu: service apache2 restart

Verify your site

Unless you have DNS set up for your stores’ URLs, you must add a static route to the host in your hosts file:

  1. Locate your operating system hosts file.

  2. Add the static route in the format:

    code language-conf
    <ip-address> french.mysite.mg
    <ip-address> german.mysite.mg
    
  3. Go to one of the following URLs in your browser:

    code language-http
    http://mysite.mg/admin
    http://french.mysite.mg/frenchstoreview
    http://german.mysite.mg/germanstoreview
    
INFO
  • Additional tasks might be required to deploy multiple websites in a hosted environment; check with your hosting provider for more information.
  • Additional tasks are required to set up Adobe Commerce on cloud infrastructure; see Set up multiple Cloud websites or stores in the Commerce on Cloud Infrastructure guide.

Troubleshooting

  • If your French and German sites return 404s but your Admin loads, make sure you completed Step 6: Add the store code to the base URL.
  • If all URLs return 404s, make sure you restarted your web server.
  • If the Admin does not function properly, make sure you set up your virtual hosts properly.
386822bd-e32c-40a8-81c2-ed90ad1e198c