Bug #91285
Updated by Steffen Hastädt over 4 years ago
If a multi-domain installation has the same page mounted to different domains, only one page will be able to display the mounted page tree.
I have the following setup (Page UID - type - slug):
<pre>
Root
[11] - Domain.at - "/"
[12] - MP - "/glass"
[31] - Domain.hr - "/"
[32] - MP - "/glass"
[16] - Domain.cz - "/"
[17] - MP - "/glass"
[36] - Domain.it - "/"
[37] - MP - "/glass"
[21] - Domain.sk - "/"
[22] - MP - "/glass"
[6] - Domain.ch - "/"
[7] - Page - "/glass"
[814] - MP - "/glass/properties"
[26] - Domain.ua - "/"
[27] - MP - "/glass"
[1] - Domain.ch - "/"
[2] - Page - "/glass"
[242] - Page - "/glass/properties"
</pre>
* Domain.com has the page tree without MountPoints
* Domain.ch has the page mounted with "show page of mounted page"
* The rest of the domains has the Mount Point one level up and mounts the whole page tree under "glass"
I always call the same URL. on each Domain "/en/glass/properties"
https://www.domain.at/en/glass/properties - OK
https://www.domain.hr/en/glass/properties - “ID was outside the domain”
https://www.domain.cz/en/glass/properties - “ID was outside the domain”
https://www.domain.it/en/glass/properties - “ID was outside the domain”
https://www.domain.sk/en/glass/properties - “ID was outside the domain”
https://www.domain.ch/en/glass/properties - “ID was outside the domain”
https://www.domain.ua/en/glass/properties - OK
https://www.domain.com/en/glass/properties - OK
The result of getPagesFromDatabaseForCandidates looks always the but with the correct root page UID.
Result for AT:
<pre>
[0] => Array
(
[uid] => 2
[pid] => 1
...
[doktype] => 1
...
[mount_pid] => 0
[mount_pid_ol] => 0
...
[slug] => /glass
...
[MPvar] => 2-12
)
[1] => Array
(
[uid] => 242
[l10n_parent] => 0
[pid] => 2
[slug] => /glass/properties
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
[MPvar] => 2-12
)
[2] => Array
(
[uid] => 11
[l10n_parent] => 0
[pid] => 0
[slug] => /
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
</pre>
Exact same result for HR, CZ, IT, SK. Only the UID of the root page is different:
<pre>
[0] => Array
(
[uid] => 2
[pid] => 1
...
[doktype] => 1
...
[mount_pid] => 0
[mount_pid_ol] => 0
...
[slug] => /glass
...
[MPvar] => 2-12
)
[1] => Array
(
[uid] => 242
[l10n_parent] => 0
[pid] => 2
[slug] => /glass/properties
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
[MPvar] => 2-12
)
[2] => Array
(
[uid] => 31
[l10n_parent] => 0
[pid] => 0
[slug] => /
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
</pre>
Since the first mount point fills up the MPvar in the first run, all the other pages are skipped in line 441++
<pre><code class="php">
if ($mountedPage && PageRepository::DOKTYPE_MOUNTPOINT === (int)$row['doktype'] && $row['mount_pid_ol']) {
// If the mounted page was already added from above, this should not be added again (to include
// the mount point parameter).
if (in_array((int)$mountedPage['uid'], $excludeUids, true)) {
continue;
}
</code></pre>
And I think this is causing the "ID was outside the domain" error.
As addition the result of the Domain.com main page:
<pre>
[0] => Array
(
[uid] => 242
[l10n_parent] => 0
[pid] => 2
[slug] => /glass/properties
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
[1] => Array
(
[uid] => 2
[l10n_parent] => 0
[pid] => 1
[slug] => /glass
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
[2] => Array
(
[uid] => 1
[l10n_parent] => 0
[pid] => 0
[slug] => /
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
</pre>
And the result of the site with the mounted page:
<pre>
[0] => Array
(
[uid] => 7
[l10n_parent] => 0
[pid] => 6
[slug] => /glass
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
[1] => Array
(
[uid] => 2
[pid] => 1
...
[title] => Glass
[doktype] => 1
...
[mount_pid] => 0
[mount_pid_ol] => 0
...
[slug] => /glass
...
[MPvar] => 2-12
)
[2] => Array
(
[uid] => 242
[l10n_parent] => 0
[pid] => 2
[slug] => /glass/properties
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
[MPvar] => 2-12
)
[3] => Array
(
[uid] => 6
[l10n_parent] => 0
[pid] => 42
[slug] => /
[mount_pid] => 0
[mount_pid_ol] => 0
[t3ver_state] => 0
[doktype] => 1
)
</pre>