Site icon GetPageSpeed

Magento Multistore Apache: SetEnvIf doesn’t work as expected (prepends REDIRECT_)

Magento Multistore Apache

Intended audience of this solution article

  • You have setup a new store within Magento interface but it doesn’t work.
  • Your Magento is running under Apache web server
  • PHP is configured to run as CGI app

When you setup multiple stores for your Magento shop, these are the typical lines you add to .htaccess file:

SetEnvIf Host .*second-domain.com.* MAGE_RUN_CODE=domain2
SetEnvIf Host .*second-domain.com.* MAGE_RUN_TYPE=website

You may have already pointed the secondary shop domain and added required directives to .htaccess to pass store code to Magento application. But it still won’t work?

Common reason for Apache Magento multistore issues

It seems that the way PHP is configured to run on some hosts, prevents it from reading environment variables set by SetEnv.
However, those variable are still available as REDIRECT_MAGE_RUN_CODE and REDIRECT_MAGE_RUN_TYPE. (prefixed with REDIRECT_)

Solution to multiple stores under Apache

Subsequently, you can create a special file, env.php which checks for those variables and puts them under proper names for Magento:

<?php

if (isset($_SERVER['REDIRECT_MAGE_RUN_CODE'])) {
        $_SERVER['MAGE_RUN_CODE'] = $_SERVER['REDIRECT_MAGE_RUN_CODE'];
}

if (isset($_SERVER['REDIRECT_MAGE_RUN_TYPE'])) {
        $_SERVER['MAGE_RUN_TYPE'] = $_SERVER['REDIRECT_MAGE_RUN_TYPE'];
}

Put the inclusion of env.php atop of core file app/Mage.php which should be sufficient to make it work for all cases:

<?php
include_once dirname(dirname(__FILE__)) . "/env.php";
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:

For a more permanent solution it will require reconfiguring PHP to run as Apache module.
But as long the solution above works well for you, there isn’t much need to change PHP configuration.

Exit mobile version