I've got Cocoon site that hosts multiple www domains, all based on the same sitemap.xmap with <map:mount uri-prefix="" src="domain_X" check-reload="yes"/>

so the configuration is as follows:

<map:pipeline>
              <map:select type="cutomDomainSelector">
                       <map:when test="domainA">
                            <map:mount uri-prefix="" src="./domaina" check-reload="yes"/>
                       </map:when>
                       <map:when test="domainB">
                             <map:mount uri-prefix="" src="./domainb" check-reload="yes"/>
                       </map:when>
               </map:select>
</map:pipeline>

Is it still possible with C3 ? Or should I use some separate blocks config ?
The problem with separate blocks config is that I want to use empty URI (not different) for each site

So
site1: http://www.domainA.org/
site2: http://www.domainB.org/

NOT

http://www.some.org/domainA/
http://www.some.org/domainB/

under one C3 war (sitemap.xmap config).

I'd suggest to empower some reverse proxy in order to make things easier here.

Reverse Proxy would give the opposite effect - collecting into one URL from multiple domain servers. I would like to have
only ONE backend server that serves as the origin for multiple domains.

With mod_jk/mod_proxy I can setup multiple workers for each domain but where should I point them to serve my clients if having only one backend server with C3 ?


Lets say I have a separate Cocoon block for each www domain. In C2.1 I had a MAIN sitemap.xmap (Controller) that controlled which context to mount upon different Hostname requests.

In C3 the only way I could achieve that is passing through with each request INFO about Hostname value. That is not very elegant
solution. But I cannot find any other.

So either every <map:match ...> would need additional <map:select ...>:

 <!--  e.g. the main / context -->

   <map:match pattern="">
       <map:select value="{jexl:cocoon.request.hostName}">
          <map:when equals="domainA">
            <map:generate src="files/domainA/homepage.xml" />
            <map:transform src="files/xslt/homepage.xslt"/>
            <map:serialize />
          </map:when>
          <map:when equals="domainB">
            <map:generate src="files/domainB/homepage.xml" />
            <map:transform src="files/xslt/homepage.xslt"/>
            <map:serialize />
          </map:when>
  </map:match>

OR (a little bit more elegant and compact):

<map:match pattern="">
            <map:generate src="files/{jexl:cocoon:request.hostName}/homepage.xml"/>
            <map:transform src="files/xslt/homepage.xslt"/>
            <map:serialize />
  </map:match>

I don't want to handle 100 VMs with C3 app for each www domain. That would be very resource-expensive config.

I would like to have only ONE C3 app for all www domains.

Greetings,
Greg