Important

You are browsing documentation for version 5.1 of OroCommerce, supported until March 2027. Read the documentation for the latest LTS version to get up-to-date information.

See our Release Process documentation for more information on the currently supported and upcoming releases.

Installation in Sub-Folder 

Hint

This section is part of the Multi-Website Configuration concept guide topic that provides a general understanding of the multiple-website configuration concept in Oro applications.

In OroCommerce, websites can be exposed on separate domains or hosted in sub-folders of the same domain. For example, the sites that target the United States and the United Kingdom may be available at https://us-store.com and https://uk-store.com respectively, or at https://store.com/us and https://store.com/uk.

Websites with dedicated domains can use the default OroCommerce installation, where all websites are installed into the web folder of the OroCommerce instance. To support websites that share a domain (e.g., https://store.com/us and https://store.com/uk), move or copy the website into a sub-directory instead.

To prepare files for the website located in the sub-directory (e.g., /uk), do the following:

  1. Copy index.php from public directory into the new location (e.g., public/uk/) and modify it to update the relative paths (e.g., adding extra /.. prefix to the path).

    For example:

    require_once __DIR__.'/../src/AppKernel.php';
    

    should be changed to

    require_once __DIR__.'/../../src/AppKernel.php';
    

    and

    /** @var \Composer\Autoload\ClassLoader $loader */
    $loader = require __DIR__.'/../vendor/autoload.php';
    

    should be changed to

    /** @var \Composer\Autoload\ClassLoader $loader */
    $loader = require __DIR__.'/../../vendor/autoload.php';
    
  2. Add WEBSITE_PATH parameter to ServerBag before $response = $kernel->handle($request); This parameter value should be the new website folder name.

    // ...
    $request = Request::createFromGlobals();
    $request->server->add(['WEBSITE_PATH' => '/<yoursitename>']);
    $response = $kernel->handle($request);
    // ...
    

where <yoursitename> is uk in our example.

Now, when you use the http://localhost/<yoursitename>/index.php address, the asset files (styles.css, app.js, etc.) are taken from the root folder on the domain instead of the dedicated website sub-folder.

Related User Guide Topics