如何在站点配置中为相同的根页面 ID 配置多个域?

Posted

技术标签:

【中文标题】如何在站点配置中为相同的根页面 ID 配置多个域?【英文标题】:How to configure multiple domains for same Root Page ID within Site Configuration? 【发布时间】:2020-10-15 15:45:58 【问题描述】:

我有一个可以被多个域访问的根页面。这些域是别名(没有变体,取决于条件)。 在 TYPO3 的早期版本中,您可以在一个根页面上拥有多个 sys_domain-records,而最上面的一个用于构建绝对 URL。

现在如何配置这种行为?

(我知道,每个网站最好有一个域,因为重复的内容等等......)

【问题讨论】:

我同意“由于内容重复,每个网站最好有一个域”,而是从 SEO 角度重定向到规范域。但是,既然您在这里确实有一个用例,那么有充分的理由这样做吗? 只要您定义了您的元规范,您就可以有尽可能多的重复...没有 SEO 剧透,只需选择一个作为主页并将该规范插入任何地方 【参考方案1】:

您可以使用当前主机扩展基本变体的条件,以根据当前主机切换您的基本 URL。

我上传了一个小扩展,您可以使用它:

https://github.com/b13/host_variants

【讨论】:

【参考方案2】:

如果您仅将其他域用作别名并希望重定向到主域,您可以使用 .htaccess 中的重写来重定向。

如果您想访问所有可以使用的域的树:

base: /
baseVariants:
  -
    base: 'https://www.xxx.de/'
    condition: 'applicationContext == "Production"'
  -
    base: 'https://www.yyy.de/'
    condition: 'applicationContext == "Production"'
  -
    base: 'https://www.zzz.de/'
    condition: 'applicationContext == "Production"'

结合主域的 config.baseURL,您应该能够实现与 sys_domain 记录相同的行为。

如果您需要不同的 baseURL,您可以为每个主机使用。无需额外的扩展。

[request.getNormalizedParams().getHttpHost() == 'www.yyy.de']
config.baseURL = https://www.yyy.de/
[end]

【讨论】:

【参考方案3】:

有一个解决方案是添加您自己的条件,可以通过基本变量使用 - 有关示例,请参阅博客文章 https://www.in2code.de/en/recent/use-different-domains-within-the-same-site-in-typo3/

【讨论】:

【参考方案4】:

这对我有用 typo3conf/sites/sitename/config.yaml (TYPO3 V10) :

base: 'http://site.de/'
baseVariants:
  -
    base: 'http://alias.de/'
    condition: 'getenv("HTTP_HOST") == "alias.de"'

为了进一步选择我在setup.ts 中关注:

# Multidomain
config.baseURL = http://site.de/
config.absRefPrefix = http://site.de/

[request.getNormalizedParams().getHttpHost() == "alias.de"]
  config.baseURL = http://alias.de/
  config.absRefPrefix = http://alias.de/
[global]

【讨论】:

以上是关于如何在站点配置中为相同的根页面 ID 配置多个域?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MongoDB 中为 NodeJS Express 应用程序存储站点配置?

如何在同一个html文件中为多个页面使用相同的标题

如何在奏鸣曲管理员中为路由设置主机?

我可以将一个站点的子域指向同一服务器/IP上另一个站点的根吗

使用 Varnish 配置多个站点

NGINX访问多个站点相同的IP url