TYPO3 10.4 中一个根页面的多域设置?

Multi-domain setup for one root page in TYPO3 10.4?

我在配置从 TYPO3 9.5 升级到 10.4 的旧站点时遇到问题。在 TYPO3 9.5 中,我有一个多域设置,使用一个根页面(选项 is_siteroot 设置为 true 的页面)并将多个域映射到该根页面,例如域 example.org、example.com 和 example.net 都映射到同一个根页面,因此在前端显示相同的内容但具有不同的 url。我能够通过在新站点模块中将根页面配置为域为 example.org 的站点,然后在列表模块中添加多个域记录(example.org、example.com 和example.net) 到这个根页面。

现在的问题是,升级到 TYPO3 10.4 后,在列表模块中添加域记录的可能性不再可用,因此我无法将多个域映射到同一个根页面。我可以访问在站点模块中配置的域 example.org,但现在我想知道如何配置该站点,以便域 example.com 和 example.net 也映射到同一个根目录页。

我目前看到的唯一可能是克隆整个页面树,然后将其他域映射到单独的根页面。但这里的问题是,所有的内容都必须在所有三个页面树中维护,这对我来说不是一个可行的解决方案,因为显示的内容对于所有三个域应该始终相同。

是否有可能以某种方式配置它,以便域映射如上所述再次工作?

提前致谢。

一个选项是调整您的 .htaccess 文件以设置合适的环境变量,以防请求的 HTTP 主机与您预期的主机列表匹配:

# Match any of example.org, example.com or example.net
# With other hosts TYPO3_BASE_HOST will be undefined 
SetEnvIfNoCase HOST ^(example\.(?:org|com|net))$ TYPO3_BASE_HOST=

现在您可以在站点配置中 use this environment variable 作为 base

base: 'https://%env(TYPO3_BASE_HOST)%/'

但是请注意,除非您设置适当的规范引用,否则在多个主机上拥有完全相同的内容会使用户感到困惑并导致糟糕的 SEO 排名。

缓存可能会干扰包含可变部分的基本路径。

我建议定义多个baseVariants。条件未缓存。

base: 'https://example.org'
baseVariants:
 - base: 'https://example.com'
   condition: 'getenv("HTTP_HOST") == "example.com"' 
 - base: 'https://example.net'
   condition: 'getenv("HTTP_HOST") == "example.net"' 

你可以结合Mathias的想法在.htaccess中设置一个环境变量来代替,但实际上不需要。

免责声明:如果在不透明代理之后,对 HTTP Host 的反应可能需要调整。然而,如今代理正在修补 Host 是非常不寻常的 - 如果他们这样做,请改用 X-Forwarded-Host