Description
Steps to reproduce
- Install Magento release 2.0.2)
1a. Disable Fullpage and block cache (just to avoid caching effects) - Setup multistore setup with nginx:
This setup is meant to handle country domains with a (not unique between stores) language prefix for urls.
E.g.
http://mysite.de/
http://mysite.de/en-DE/
http://mysite.at/
http://mysite.at/en-AT/
http://mysite.ch/
http://mysite.ch/en-CH/
a)
server {
server_name mysite.de
# handle default requests
location ~ (index|get|static|report|console|404|503)\.php$ {
# set base store for this domain
fastcgi_param MAGE_RUN_CODE base_de_de;
fastcgi_param MAGE_RUN_TYPE store;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# handle language code requests like mysite.de/en-DE/...
location ~ "\/([a-zA-Z]{2})\-([a-zA-Z]{2})(\/?)(.*)$" {
fastcgi_param MAGE_RUN_CODE base_$1_$2; # will result in e.g. base_en_de
fastcgi_param MAGE_RUN_TYPE store;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $MAGE_ROOT/pub/index.php;
include fastcgi_params;
# overwrite paths with cleanup of language code
fastcgi_param REQUEST_URI $3$4;
}
}
b)
server {
server_name mysite.at
# handle default requests
location ~ (index|get|static|report|console|404|503)\.php$ {
# set base store for this domain
fastcgi_param MAGE_RUN_CODE base_de_at;
fastcgi_param MAGE_RUN_TYPE store;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# handle language code requests like mysite.at/de-AT/...
location ~ "\/([a-zA-Z]{2})\-([a-zA-Z]{2})(\/?)(.*)$" {
fastcgi_param MAGE_RUN_CODE base_$1_$2; # will result in e.g. base_en_at
fastcgi_param MAGE_RUN_TYPE store;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $MAGE_ROOT/pub/index.php;
include fastcgi_params;
# overwrite paths with cleanup of language code
fastcgi_param REQUEST_URI $3$4;
}
}
c)
server {
server_name mysite.ch
# handle default requests
location ~ (index|get|static|report|console|404|503)\.php$ {
# set base store for this domain
fastcgi_param MAGE_RUN_CODE base_de_ch;
fastcgi_param MAGE_RUN_TYPE store;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# handle language code requests like mysite.at/de-AT/...
location ~ "\/([a-zA-Z]{2})\-([a-zA-Z]{2})(\/?)(.*)$" {
fastcgi_param MAGE_RUN_CODE base_$1_$2; # will result in e.g. base_en_ch
fastcgi_param MAGE_RUN_TYPE store;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $MAGE_ROOT/pub/index.php;
include fastcgi_params;
# overwrite paths with cleanup of language code
fastcgi_param REQUEST_URI $3$4;
}
}
- Store Configuration
Store 1:
Name: My Store (Renamed the default)
Root Category: use default
Default Store View: DE - DE
Website 1 (Default):
Name: My Website (Renamed the default)
Code: base
Default Store: My Store
Store Views 1:
Name: DE - DE (renamed default)
Code: base_de_de
Backend Base Url: http://mysite.de/
Backend Base Link Url: http://mysite.de/
Store Views 2:
Name: EN - DE
Code: base_en_de
Backend Base Url: http://mysite.de/
Backend Base Link Url: http://mysite.de/en-DE/
Store Views 3:
Name: DE - AT
Code: base_de_at
Backend Base Url: http://mysite.at/
Backend Base Link Url: http://mysite.at/
Store Views 4:
Name: EN - AT
Code: base_en_at
Backend Base Url: http://mysite.at/
Backend Base Link Url: http://mysite.de/en-AT/
Store Views 5:
Name: DE - CH
Code: base_de_ch
Backend Base Url: http://mysite.ch/
Backend Base Link Url: http://mysite.ch/
Store Views 6:
Name: EN - CH
Code: base_en_ch
Backend Base Url: http://mysite.ch/
Backend Base Link Url: http://mysite.de/en-CH/
Expected result
- Switching between stores will work as expected
- Content will be shown as configured for the store
Actual result
- Switching between stores works some time - but at some point you can't get back to the default stores views.
Additional, at some time endless redirect loops occur between 2 of the stores after switching.
Can only be fixed by closing browser AND clearing session table AND clearing cache via commandline. - If you call the store with mysite.de you will get
a) OK a correct store switcher preselection
b) OK a correct content (some configured cms page)
c) NOT OK Top Navigation links will show links with a
language/country prefix and url from the other store (e.g. mysite.ch/en-CH/somecategory.html even if you are on mysite.de.
Reload of the page will sometimes bring the correct results for the store, sometimes navigation from an other store (wrong too).
I even checked the context in the navigation block by echo of store id: it's correctly showing the expected store.
Hope that someone has an idea what went wrong here.