TYPO3 10.4 中一个根页面的多域设置?
Posted
技术标签:
【中文标题】TYPO3 10.4 中一个根页面的多域设置?【英文标题】:Multi-domain setup for one root page in TYPO3 10.4? 【发布时间】:2021-01-28 15:47:42 【问题描述】:我在配置从 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 也映射到同一个根页面。
我目前看到的唯一可能性是克隆整个页面树,然后将其他域映射到单独的根页面。但这里的问题是,所有内容都必须在所有三个页面树中维护,这对我来说不是一个可行的解决方案,因为所有三个域显示的内容应该始终相同。
是否可以通过某种方式进行配置,以便域映射再次按上述方式工作?
提前致谢。
【问题讨论】:
您是否尝试在站点配置中将其他站点设置为 baseVariants? 这种方法对我不起作用,因为在将其他域设置为 baseVariants 时,它们只会被重定向到基本域。 【参考方案1】:一个选项是调整您的 .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=$1
现在您可以在站点配置中将use this environment variable 用作base
:
base: 'https://%env(TYPO3_BASE_HOST)%/'
但请注意,在多个主机上拥有完全相同的内容会混淆用户并导致糟糕的 SEO 排名,除非您设置了正确的规范参考。
【讨论】:
我喜欢这种方法! :) 这种方法几乎可行,但对我来说并不完全。问题在于 TYPO3 将 baseUrl 缓存在 cache_hash 表中。这会导致以下行为:调用 example.org 按预期工作(创建了带有 baseUrl example.org 的 cache_hash 记录),但调用 example.com 或 example.net 不起作用并导致错误(找不到页面,原因:未找到站点配置。)。清除缓存后(表 cache_hash 的所有记录都被删除)调用 example.com 有效,但 example.org 不再有效(现在创建了带有 baseUrl example.com 的 cache_hash 记录)。 您的主机是否碰巧有 3 种不同的语言?如果是,那么您可以改用base: /
并改用 3 个主机作为语言库。这些是在计算 cHash 基数时原生包含的。
不,所有域都应具有相同的语言和相同的内容。【参考方案2】:
缓存可能会干扰包含可变部分的基本路径。
我建议定义多个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
。
【讨论】:
这种方法对我有用。现在所有三个域 example.org、example.com 和 example.net 都显示相同的内容,但 URL 中的域不同。然而,由于多个域上的重复内容,这会导致糟糕的 SEO 排名。因此,为避免这种情况,您必须正确设置规范 URL。以上是关于TYPO3 10.4 中一个根页面的多域设置?的主要内容,如果未能解决你的问题,请参考以下文章