Как настроить UriiManager Yii2 для обработки правил с косой чертой и без нее - PullRequest
1 голос
/ 31 марта 2020

У меня есть страница типа domain.com/calendar/2001/8/22, ее можно посетить по

domain.com/calendar/2001
domain.com/calendar/2001/8
domain.com/calendar/2001/8/22

. В зависимости от URL-адреса будет отображаться различное содержимое.

Я настроил urlManager правила:

'calendar/<year:[\-\d]+>' => 'calendar/view',
'calendar/<year:[\-\d]+>/<month:[\d]+>' => 'calendar/view',
'calendar/<year:[\-\d]+>/<month:[\d]+>/<day:[\d]+>' => 'calendar/view',

Все нормально. Но когда я захожу на domain.com/calendar/2008/8/ (с конечным sla sh, пользователи моего сайта часто заходят с конечным sla sh), я получаю 404.

Как настроить urlManager для обработки правил с помощью и без запаздывания sla sh?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вы должны использовать UrlNormalizer, чтобы перенаправить «sla sh URLs» на «non-sla sh URLs» (или наоборот):

'urlManager' => [
    'enablePrettyUrl' => true,,
    'normalizer' => [
        'class' => 'yii\web\UrlNormalizer',
    ],
],

It будет перенаправлять все "sla sh URLs" на "non-sla sh URLs". Если вы хотите использовать "sla sh URLs", вы должны установить UrlManager::$suffix на /, тогда UrlNormalizer перенаправит "non-sla sh URLs" на "sla * 1023" * URLs.

Более подробную информацию о нормализации можно найти в руководстве .

0 голосов
/ 29 апреля 2020

Добавить 'suffix' => '/', сразу после 'enablePrettyUrl' => true,. Имейте в виду, что это изменит все ссылки на вашем сайте.

...