从 LTS 8 升级到 LTS 9 后的路由问题(RealURL -> 核心路由)

Routing problem after upgrading from LTS 8 to LTS 9 (RealURL -> Core routing)

将我们的站点从版本 8 LTS 迁移到版本 9 LTS 后,我遇到了一些路由配置问题。

对于 RealURL 我们使用 fixedPostVars,'noMatch' => 'bypass'.

例如 URL

http://Mysite/my-page/mysubpage
?tx_extension[action]=show
&tx_extension[controller]=Researchers
&tx_extension[fullName]=FirstNameWithÉ-LastName
&tx_extension[id]=37
&cHash=f077e6ab99d456c1d0431603186c32cf

我们想要

http://Mysite/my-page/mysubpage/FirstNameWithC-LastNameWithe/37

现在我可以得到

http://Mysite/my-page/mysubpage/FirstNameWith%2527-LastName/37
?tx_extension%5Baction%5D=show
&tx_extension%5Bcontroller%5D=Researchers
&cHash=067d606ab30ace24e7cf347bdf89b011

我尝试了几种配置都没有成功。

那么我该怎么做才能隐藏控制器、动作和 cHash。

此外,如何处理 URL 中的重音字符。

这是我的 routeEnhancers 配置

  ListResearchers:
    type: Plugin
    limitToPages:
      - 2706
      - 2707
    routePath: '/{name}/{uid}'
    namespace: 'tx_extension'
    _arguments:
      name: 'fullName'
      uid: 'id'

fullName 的值 space 太大,没有 requirements/aspects 就无法存在。这将产生 ?cHash.

对于您的情况(字符串),您可以使用 PersistedAliasMapper 或编写自定义方面。

uid 将需要 requirements。 (如果你想使用它。你可以用 PersistedAliasMapper 摆脱它)