regex - TYPO3 9.5 - 使用 cms-redirects 重定向
问题描述
我正在使用 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/$#
有人对此有解决方案吗?在此先感谢您的帮助。问候朱利安
解决方案
你得到一个 404 的原因是,你的正则表达式只匹配在开始时填充内容的页面,/about-us/
在你的情况下是语言段或任何路径文件夹。
也就是说,您没有为"Without language segment"配置重定向。
一种方法是添加第二个重定向:
#^/about-us/$#
作为正则表达式,并且对其他设置使用相同的设置,它应该做你想要的。
无论如何,会省略 (.*) 占位符,因为它匹配很多。更具描述性可以节省 headcache 和不受控制的匹配。
否则,您必须创建一个正则表达式,它匹配两种情况,有和没有语言段:
#^/([a-z0-9-]+)(/|)about-us/$#
或更开放:
#^/(.*)(/|)about-us/$#
或者,如果您有路径结构,最好只限于已知的语言段:
#^/(en/|fr/|de/|)about-us/$#
推荐阅读
- python-3.x - 我想在链接中格式化一些数据,但我无法在 python 中这样做
- perl - 为什么有些全局符号需要明确的包名
- node.js - TypeError:回调不是 readline 中的函数
- python - 在 django 网站中存储文章文本的最佳实践
- python - 基于另一个函数的返回参数的退出函数?
- autodesk-forge - Autodesk Forge 导入 IFC 失败
- ios - 二进制文件已从 iTunesConnect 的活动中删除
- java - 如何从 Java Activity 传递数据以响应本机?
- git - “blob”真的意味着 git 中的“二进制大对象”吗?
- angular - 尝试将输入类型实现为角度材料中的文件上传