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