Description
I setup a site for testing multi-store functionality and found that a lot of the header and footer urls and possibly others on a page are referencing a single store view's base_url rather than the store view that is currently running.
My configuration
In the Magento Admin I am using the default website with a code of base
.
I have setup the default store as Odin
and have a single store view under that store with the code of default
.
I setup a second store Thor
with a single store view with the code of thor
.
I then went into the Store -> Configuration -> General -> Web -> Base URLs and adjusted the Base URL values for each store view.
default = 'http://www.mage2base.dev/odin/'
thor = 'http://www.mage2base.dev/thor/'
I also setup symbolic links off the magento directory for /odin/
and /thor/
ln -s ./ thor
ln -s ./ odin
I also added entries to my .htaccess file:
############################################
## Multi-site configuration
##
## Sets an env var on secure page loads for www redirects ##
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ - [E=SECURE:s]
RewriteCond %{REQUEST_URI} !^/(odin|thor|admin|index\.php) [NC]
RewriteRule ^(.*)$ http%{ENV:SECURE}://%{HTTP_HOST}/odin/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/odin [NC]
RewriteRule ^(.*)$ - [E=MAGE_RUN_CODE:default,E=MAGE_RUN_TYPE:store]
RewriteCond %{REQUEST_URI} ^/thor [NC]
RewriteRule ^(.*)$ - [E=MAGE_RUN_CODE:thor,E=MAGE_RUN_TYPE:store]
I had disabled caching for testing purposes and was running from a code base from August 3rd commit 83132783e0a6bed32c45e6d06df851865e668abc
Results I'm seeing
If I request the domain root http://www.mage2base.dev/
it redirects to http://www.mage2base.dev/odin/
as expected since that is the default store. At the bottom of the page the store switcher is displayed and has Odin
listed, but the links in the header for My Account, My Wish List, Create an Account, and Sign In all have urls that use the base_url from the thor
store view. The link for the cart also uses the wrong base_url, but the Advanced Search link has the correct base_url.
http://www.mage2base.dev/thor/customer/account/
http://www.mage2base.dev/thor/checkout/cart/
http://www.mage2base.dev/odin/catalogsearch/advanced/
http://www.mage2base.dev/thor/contact/
The Odin
store displays the correct root category for the store and the correct URLs for category pages, so that part appears to work correctly.
http://www.mage2base.dev/odin/wisdom.html
I did notice on category pages where it listed products if I tried to change the Sort By option it would end up redirecting to a page that used the base_url of the thor
store view http://www.mage2base.dev/thor/wisdom.html
and end up on a 404 error page because that category didn't exist on the Thor
store, so this base_url issue appears to be affecting a lot of things.
I have attempted setting up a third store loki
and saw similar results with URLs using the base_url from the thor
store view. I suspected that thor
is likely getting picked as the last store view code in some sorted array. I tested this theory by creating another store view with a code of zend
and then it was getting used as the base_url (http://www.mage2base.dev/zend/customer/account/
) for the other stores instead of thor
.
I tested changing the thor
store view base url to something invalid like http://www.mage2base.dev/asdf/
and saw the header and footer links use that base_url in the links (Example: http://www.mage2base.dev/asdf/customer/account/
) when accessing the Odin
store at http://www.mage2base.dev/odin/