【问题标题】:TYPO3 9.5 - Redirects with cms-redirectsTYPO3 9.5 - 使用 cms-redirects 重定向
【发布时间】:2020-04-01 07:46:12
【问题描述】:

我正在使用 TYPO3 v9.5.15 并想配置一些自动重定向。 我希望访问https://www.example.com/about-us/ 的用户被重定向到特定的内部页面。

网站必须配置语言(法语和德语)。这是站点配置:

base: 'https://www.example.com'
baseVariants:
  -
    base: 'https://local.example.com'
    condition: 'getenv("HTTP_HOST") == "local.example.com"'
  -
    base: 'https://staging.domain.com'
    condition: 'getenv("HTTP_HOST") == "staging.example.com"'
errorHandling:
  -
    errorCode: '404'
    errorHandler: Page
    errorContentSource: 't3://page?uid=157'
languages:
  -
    title: Français
    enabled: true
    base: /fr/
    typo3Language: fr
    locale: fr_CH
    iso-639-1: fr
    navigationTitle: FR
    hreflang: fr-CH
    direction: ltr
    flag: fr
    languageId: '0'
  -
    title: Deutsch
    enabled: true
    base: /de/
    typo3Language: de
    locale: de_CH
    iso-639-1: de
    navigationTitle: DE
    hreflang: de-CH
    direction: ltr
    fallbackType: fallback
    fallbacks: '0'
    flag: de
    languageId: '1'
rootPageId: 84
routes: {  }

这是配置的重定向:

重定向仅适用于https://www.example.com/fr/about-us/https://www.example.com/de/about-us/,而不适用于语言段。如果没有语言段,我会收到 404 错误页面。

在调试 \TYPO3\CMS\Redirects\Service\RedirectService->matchRedirect() 时,我的正则表达式会与当前的 URI 路径进行比较。路径不是 /about-us/,而是 /fr/page-not-found,这意味着重定向已经发生。匹配失败,因为我的正则表达式是:

#^(.*)/about-us/$#

有人对此有解决方案吗? 在此先感谢您的帮助。 问候 朱利安

【问题讨论】:

  • 我无法用最新的 TYPO3 重现这个。使用带有介绍包的标准 TYPO3 实例并将 /en 配置为默认语言,然后使用正则表达式添加重定向:#^(.*)/about-us$#。也许问题已解决或 is_regex 复选框未激活?如果问题仍然存在,也许提交一个问题?
  • 无论如何,最好使用答案中建议的更具体的重定向,例如#^(fr|de|)/about-us$#
  • 可能相关:stackoverflow.com/questions/59746834/… 可能是 v9 中不再出现的问题。

标签: regex redirect typo3


【解决方案1】:

您得到 404 的原因是,您的正则表达式仅匹配开头填充了某些内容的页面,以 /about-us/ 结尾 - 在您的情况下是语言段或任何路径文件夹。

也就是说,您没有为“无语言段”配置重定向。

一种方法,添加第二个重定向:

#^/about-us/$#

作为正则表达式,并且对其他设置使用相同的设置,它应该做你想要的。

无论如何,会省略 (.*) 占位符,因为它匹配很多。更具描述性可以节省 headcache 和不受控制的匹配。

否则,您必须创建一个正则表达式,它匹配两种情况,有和没有语言段:

#^/([a-z0-9-]+)(/|)about-us/$#

或更多开放:

#^/(.*)(/|)about-us/$#

或者,如果您有路径结构,最好只限于已知的语言段:

#^/(en/|fr/|de/|)about-us/$#

【讨论】:

  • 非常感谢您的回答。我尝试了您的不同主张,但不幸的是它不起作用。问题是在调用example.com/about-us 时,TYPO3 在重定向服务之前将URL 转换为example.com/fr/page-not-found。然后,用正则表达式测试的路径是“/fr/page-not-found/”而不是“/about-us/”或“/fr/about-us/”。我希望我足够清楚;-)
  • 通常重定向服务在执行 404 之前运行。一定有什么改变了这一点。我已经在 v9 页面上测试了上述 reges,没有现有页面 .. 并且它们首先重定向。最终尝试在正则表达式中不使用结尾“/”。或使用 (/|)$# 和正则表达式的结尾而不是 /$# 否则某些东西会事先影响您的系统。你检查过中间件或任何扩展吗?但是当我 sed 时,重定向通常应该发生在任何页面检测和 404 处理内部...
  • 我尝试更改正则表达式的结尾但没有成功。我将检查为什么在重定向服务之前触发 404 错误。非常感谢您的帮助。我一有发现就会反馈。
  • @JulienFourel 你找到合适的解决方案了吗?我目前在 TYPO3 10 上也面临这个问题。我想将“/files/a/b/c.pdf”之类的路径重定向到“/fileadmin/d/e/f.pdf”。但是每个开头没有语言参数的重定向,如“/de/...”,都会被重定向到404。
  • @BastianW 不幸的是我没有找到任何解决方案。
猜你喜欢
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多