Determining website context
You configure additional managed websites for different purposes and different domains by adding them to the site definition node in the
Sitecore.config file. For example, you can define a new site to be your published public-facing site or to be used by content editors to access the content management system.
Sitecore determines the website context based on the incoming URL and the following two attributes:
hostName– specifies the name of the website as it appears in the incoming URL. It can contain wildcards.
virtualFolder– the physical path to the website root folder.
When Sitecore receives an incoming URL, it first compares the URL to the
hostName attribute of each site in the
<sites> list in the config file.
hostName attribute matches the incoming URL or the
hostName attribute is empty, Sitecore next compares the
Sitecore uses the first site definition in the
<sites> list where the
virtualFolder attributes match the incoming URL as the context site.
Sitecore checks for sites in the same order that they occur in the list. Therefore, you must list sites starting with the most specific entry and ending with the most general entry. For example, if you have a website where
hostName is mysite.com.au and another website where
hostName is mysite.com, the entry for mysite.com.au must be first in the list. Otherwise, an incoming URL for mysite.com.au will match the entry for mysite.com first.
Sitecore determines the website context differently for the Experience Editor. Sites are only resolved under the
startItem item that is defined in the configuration of a site, If you have multiple sites and an item is not under any
startItem item, Sitecore resolves a site for the item as Preview.DefaultSite.
You can change this logic by customizing the
Sitecore.Shell.Applications.WebEdit.Commands.OpenExperienceEditor from the
Sitecore.ExperienceEditor assembly. This class is used by the