TYPO3 RealURL postVarSets — значение включает точку

У меня есть конфигурация realurl, которая включает в себя:

    'postVarSets' => array(
...
        '96' => array(
                'name' => array (
                    array(
                        'GETvar' => 'person',
                    ),
                ), 
            ),      
    )

Это сопоставляет URL-адрес, например http://mydomain/name/knight, с параметром GET "person=knight"

Однако, если я попытаюсь использовать http://mydomain/name/g.knight, это не удастся. "g.knight", кажется, интерпретируется как имя несуществующего файла. Я не вижу решения. Любые идеи?


person Graham Knight    schedule 10.04.2015    source источник
comment
Работает ли 'person=g.knight'?   -  person common sense    schedule 15.04.2015
comment
Да, это работает. Я только что еще немного поэкспериментировал и обнаружил, что если установить init->appendMissingSlash = 1, моя проблема исчезнет. Если это не вызывает проблем на других сайтах, думаю, у меня есть решение. Спасибо за ваш интерес.   -  person Graham Knight    schedule 16.04.2015
comment
Пожалуйста, добавьте это как ответ на свой вопрос.   -  person Michael    schedule 21.04.2015


Ответы (2)


Я только что еще немного поэкспериментировал и обнаружил, что если я установлю init->appendMissingSlash = 1, моя проблема исчезнет. Если это не вызывает проблем на других сайтах, думаю, у меня есть решение.

person Graham Knight    schedule 22.04.2015

С решением всегда добавлять отсутствующую косую черту (без использования «ifNotFile») вы можете столкнуться с проблемами, когда захотите предоставить PDF-файл для загрузки. например

Если объект «человек» исходит из вашего собственного расширения, рассмотрите возможность адаптации этого фрагмента конфигурации cal real_url conf:

'fixedPostVars' => array(
        'calSingleView' => array(
            array(
                'GETvar' => 'tx_cal_controller[uid]',
                'lookUpTable' => array(
                    'addWhereClause' => ' AND NOT deleted',
                    'alias_field' => 'title',
                    'id_field' => 'uid',
                    'table' => 'tx_cal_event',
                    'useUniqueCache' => 1,
                    'useUniqueCache_conf' => array(
                        'spaceCharacter' => '-',
                        'strtolower' => 1,
                    ),

Настройки в useUniqueCache_conf приводят к удалению любых специальных символов при создании URI (включая точку). Таким образом, вы http://mydomain/name/gknight сможете обойти свою проблему.

person Hafenkranich    schedule 22.04.2016
comment
Спасибо за предложение. Я так понимаю, что удаление специальных символов является побочным эффектом установки 'useUniqueCache' => 1? Это где-то задокументировано? - person Graham Knight; 27.04.2016
comment
Не нашел подробного описания в онлайн-документации real_url. Внутри ext/realurl/Classes/Controller/Encoder/UrlEncoder.php в функции cleanUpAlias() есть вызов ext/realurl/Classes/Utility.php -> convertToSafeString(). Там вы найдете применяемые регулярные выражения. - person Hafenkranich; 28.04.2016