设置realurl以防止出现“错误的'L'参数”错误

时间:2019-04-04 07:52:45

标签: typo3 typo3-7.6.x realurl

这是一个异常,当URL中存在错误的L参数时,将引发此异常。它会污染/typo3temp/logs/文件夹中的typo3_log。
此异常似乎是在realurl的版本2.3.0中引入的。如果我降级到版本2.2.1,该错误将不再记录。在版本2.3.1中,我还会得到一个 巨大 堆栈转储,其中包含整个TypoScript配置数组。

触发此错误的URL示例为:

  • 非整数值:
    • https://www.example.org/index.php?uid=1&L=a
  • 与TypoScript设置不匹配的
  • 整数:
    • config.linkVars = L(0-1)
    • https://www.example.org/index.php?uid=1&L=5
  • 与TypoScript设置匹配但与realurl_config.php文件中的设置不匹配的整数
    • config.linkVars = L(0-6)
    • 'preVars' => array ( 0 => array ( 'GETvar' => 'L', 'valueMap' => array ( 'en' => '1', 'fr' => '2', 'es' => '3', 'it' => '4', ), 'noMatch' => 'bypass', ), )
    • https://www.example.org/index.php?uid=1&L=6
  • sys_language数据库表中定义的现有语言不匹配的整数

错误消息是这样的

  

component =“ DmitryDulepov.Realurl.Encoder.UrlEncoder”:realurl检测到错误的“ L”参数(“ X”)。页面缓存被禁用,以防止传播错误的“ L”值-“ <此处为长转储>

其中X是错误的参数

realurl版本2.3.2中不存在长转储,而版本2.3.1中则存在长转储

我有一个完全正常的设置,可以与像这样的realurl版本2.2.x一起很好地工作

TypoScript

config.linkVars = L(0-1)
page.config.linkVars < config.linkVars
config.uniqueLinkVars = 1
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de
config.sys_language_uid = 0

[globalVar = GP:L = 1]
config.language = en
config.locale_all = en_SUS
config.htmlTag_langKey = en
config.sys_language_uid = 1
[global]

realurl_conf.php

'preVars' => array (
    0 => array (
        'GETvar' => 'L',
        'valueMap' => array (
            'en' => '1',
        ),
        'noMatch' => 'bypass',
    ),
),

激活的语言英语:id = 1,默认语言德语

我搜索了错误消息,但发现的只是论坛上Dimitri(realurl的作者)的答复,他们声称配置错误,但没有任何提示。

注意

不会触发该错误,因为我网站上的某些链接具有错误的L参数。访问日志显示那些参数错误的链接来自漫游器,没有引荐来源的链接或来自外部链接

1 个答案:

答案 0 :(得分:0)

我前几次做了这个补丁,似乎可以解决这个问题:

j

我认为realurl配置中没有什么可以修复它。因此,您必须应用此补丁。我个人使用cweagans/composer-patches,如果您使用作曲家来管理网站的依存关系,那很好。