Skip to content

Multistore Subfolder Configuration Method

If you would like to use the same domain, but use different stores per subfolder (such as /us, /ca, /fr, /en, etc.), you should use the subfolder method instead of the standard method for multistore configuration.

  1. Create the desired folder within the /pub/ directory in your root directory (for this example, we will use "en"). mkdir /srv/public_html/pub/en
  2. Create the required symlinks within the new folder. Make sure they are absolute to prevent any issues with autoscaling. For example:

      cd /srv/public_html/pub/en
      ln -s /srv/public_html/app app
    

    Once completed, the /en directory should appear like this:

    lrwxrwxrwx  1 www www 10 Mar 23 14:07 app -> /srv/public_html/app/
    lrwxrwxrwx  1 www www 19 Mar 23 14:08 index.php -> /srv/public_html/pub/index.php
    lrwxrwxrwx  1 www www 10 Mar 23 14:08 lib -> /srv/public_html/lib/
    lrwxrwxrwx  1 www www 27 Mar 23 17:13 media -> /srv/public_html/pub/media/
    lrwxrwxrwx  1 www www 28 Mar 23 17:13 static -> /srv/public_html/pub/static/
    lrwxrwxrwx  1 www www 10 Mar 23 14:08 var -> /srv/public_html/var/
    
  3. Add the following code to the Nginx includes. Adjust the subfolder name, "/en", in each occurence (7) to the actual subfolder you prefer, and the store code, "en_store_view", in the one occurence.

    location /en/ {
    index index.php index.html index.htm;
    try_files $uri $uri/ /en/index.php?$args ;
    location ~* \.php$ {
    expires off;
    fastcgi_pass php-fpm;
    fastcgi_keep_conn on;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param MAGE_RUN_CODE "en_store_view";
    fastcgi_param MAGE_RUN_TYPE "store";
    fastcgi_param UNIQUE_ID $connection.$connection_requests;
    fastcgi_param HTTPS $http_x_ssl_offloaded if_not_empty;
    
    }
    
    location ~ ^/en/static/version {
            rewrite ^/en/static/(version\d*/)?(.*)$ /en/static/$2 last;
        }
    
    location /en/media/ {
        try_files $uri $uri/ /get.php$is_args$args;
    
        location ~ ^/en/media/theme_customization/.*\.xml {
            deny all;
        }
    
        location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
            add_header Cache-Control "public";
            add_header X-Frame-Options "SAMEORIGIN";
            expires +1y;
            try_files $uri $uri/ /get.php$is_args$args;
        }
        location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
            add_header Cache-Control "no-store";
            add_header X-Frame-Options "SAMEORIGIN";
            expires    off;
            try_files $uri $uri/ /get.php$is_args$args;
        }
        add_header X-Frame-Options "SAMEORIGIN";
    }
    
    }