TYPO3 cms-indexed-search 核心扩展缺少 RouteEnhancer?
TYPO3 cms-indexed-search core extension missing RouteEnhancer?
我们正在更新一个古老的 TYPO3 项目,我们已经在 TYPO3 9.5 上 运行 并且经过大量重构后看起来不错。
现在我修改了已在 T3Core (sysext:indexed_search) 中实现的 ext:indexed_search 部分。所以如果我 disable/remove 我的网站配置,搜索就可以开箱即用。一旦我启用我们的默认站点配置,持有:
base: 'ourDomain'
baseVariants:
-
base: 'ourDomain'
condition: 'applicationContext == "Development"'
-
base: 'ourDomain'
condition: 'applicationContext == "Testing"'
errorHandling: { }
languages:
-
title: Deutsch
enabled: true
base: /
typo3Language: de
locale: de_DE
iso-639-1: de
navigationTitle: Deutsch
hreflang: de-DE
direction: ''
flag: at
languageId: '0'
rootPageId: 1
routes: { }
routeEnhancers:
搜索不再正常工作。我可以导航到搜索页面,但仍然有搜索表单和内容,但没有显示任何结果。我将 $search 转储到 SearchController 中,发现无论如何它实际上都是空的。
经过一些研究,我认为 RouteEnhancer 配置可能是问题所在,所以我向站点 cfg 添加了一些配置
routeEnhancers:
IndexedSearchPlugin:
type: Extbase
limitToPages:
- 41
extension: IndexedSearch
plugin: Pi2
routes:
- routePath: '/search'
_controller: 'Search::search'
defaultController: 'Search::search'
因此,作为根页面的子页面,我们有一个名为 "Suche"(route=/suche) 的页面,其中包含 indexed_search 插件。
所以 RouteEnhancer 应该像域一样工作。at/suche -> 点击搜索 -> /suche/search 结果,对吗?似乎一切正常,但搜索输入字段中的数据丢失了...所以没有结果。
我已经有一段时间无法使用它了,非常感谢您的帮助
表单操作中缺少尾部斜杠是问题所在。因为如果没有斜杠,用户将在丢失 POST 数据时被重定向。
解决方案:
.htaccess:
#redirect urls without slash
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
站点配置:
routeEnhancers:
IndexedSearchPlugin:
type: Extbase
limitToPages:
- 41
extension: IndexedSearch
plugin: Pi2
routes:
- routePath: '/search'
_controller: 'Search::search'
defaultController: 'Search::search'
PageTypeSuffix:
type: PageType
default: '/'
index: ''
map:
'/': 0
我们正在更新一个古老的 TYPO3 项目,我们已经在 TYPO3 9.5 上 运行 并且经过大量重构后看起来不错。
现在我修改了已在 T3Core (sysext:indexed_search) 中实现的 ext:indexed_search 部分。所以如果我 disable/remove 我的网站配置,搜索就可以开箱即用。一旦我启用我们的默认站点配置,持有:
base: 'ourDomain'
baseVariants:
-
base: 'ourDomain'
condition: 'applicationContext == "Development"'
-
base: 'ourDomain'
condition: 'applicationContext == "Testing"'
errorHandling: { }
languages:
-
title: Deutsch
enabled: true
base: /
typo3Language: de
locale: de_DE
iso-639-1: de
navigationTitle: Deutsch
hreflang: de-DE
direction: ''
flag: at
languageId: '0'
rootPageId: 1
routes: { }
routeEnhancers:
搜索不再正常工作。我可以导航到搜索页面,但仍然有搜索表单和内容,但没有显示任何结果。我将 $search 转储到 SearchController 中,发现无论如何它实际上都是空的。
经过一些研究,我认为 RouteEnhancer 配置可能是问题所在,所以我向站点 cfg 添加了一些配置
routeEnhancers:
IndexedSearchPlugin:
type: Extbase
limitToPages:
- 41
extension: IndexedSearch
plugin: Pi2
routes:
- routePath: '/search'
_controller: 'Search::search'
defaultController: 'Search::search'
因此,作为根页面的子页面,我们有一个名为 "Suche"(route=/suche) 的页面,其中包含 indexed_search 插件。
所以 RouteEnhancer 应该像域一样工作。at/suche -> 点击搜索 -> /suche/search 结果,对吗?似乎一切正常,但搜索输入字段中的数据丢失了...所以没有结果。
我已经有一段时间无法使用它了,非常感谢您的帮助
表单操作中缺少尾部斜杠是问题所在。因为如果没有斜杠,用户将在丢失 POST 数据时被重定向。
解决方案:
.htaccess:
#redirect urls without slash
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
站点配置:
routeEnhancers:
IndexedSearchPlugin:
type: Extbase
limitToPages:
- 41
extension: IndexedSearch
plugin: Pi2
routes:
- routePath: '/search'
_controller: 'Search::search'
defaultController: 'Search::search'
PageTypeSuffix:
type: PageType
default: '/'
index: ''
map:
'/': 0