Настройте realurl для предотвращения ошибки «Bad 'L'» - PullRequest
1 голос
/ 04 апреля 2019

Это исключение, которое выдается, когда в URL присутствует неправильный параметр L.Он загрязняет typo3_log в папке /typo3temp/logs/.
Это исключение, по-видимому, введено в версии 2.3.0 realurl.Если я вернусь к версии 2.2.1, ошибка больше не будет регистрироваться.С версией 2.3.1 я также получаю огромный дамп стека, который содержит весь массив конфигурации TypoScript.

Примеры URL-адресов, которые вызывают эту ошибку:

  • нецелые значения:
  • целые числакоторые не соответствуют настройке TypoScript:
  • целых чисел, которые соответствуют настройке 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 - неверный параметр

Длинный дамп отсутствует в версии 2.3.2 realurl, но в версии 2.3.1

У меня совершенно нормальная настройка, которая хорошо работала с такой версией 2.2.x realurl

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, Язык по умолчанию Немецкий

Я искал сообщение об ошибке, но все, что я нашел, было некоторыми ответами на форуме Дмитрия (автора realurl), который утверждает, что конфигурация неправильна, но без намека начто не так.

Примечание

Ошибка не вызывается, потому что некоторые ссылки на моем сайте имеют неправильный параметр L. В журнале доступа показано, что эти ссылки с неправильными параметрами исходят от ботов илибез реферера или с внешних ссылок

1 Ответ

0 голосов
/ 04 апреля 2019

Я сделал этот патч несколько раз назад, который, кажется, решил проблему:

index 1ce3874..c7004ea 100644
--- a/Classes/Encoder/UrlEncoder.php
+++ b/Classes/Encoder/UrlEncoder.php
@@ -1605,10 +1605,10 @@ class UrlEncoder extends EncodeDecoderBase {
                addslashes($sysLanguageUid)
            );
            $this->tsfe->set_no_cache($message);
-           $this->logger->error($message);
-           if (version_compare(TYPO3_version, '7.6.0', '>=')) {
-               $this->logger->debug($message, debug_backtrace());
-           }
+           //$this->logger->error($message);
+           //if (version_compare(TYPO3_version, '7.6.0', '>=')) {
+           //  $this->logger->debug($message, debug_backtrace());
+           //}

            throw new InvalidLanguageParameterException($sysLanguageUid);
        }

Я думаю, что в конфигурации realurl нет ничего, чтобы исправить это.Таким образом, вы должны применить этот патч.Я лично использую cweagans / composer-patches , что хорошо, если вы используете composer для управления зависимостями вашего сайта.

...