Использование RegEx в правилах UrlManager Yii 2, не работает

Yii2 urlManager, я хочу написать регулярное выражение, которое выглядит ниже.

*.*com/bj/haidian/ это хорошо.

*.*com/bj/haidian не работает.

'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
"<controller:\w+>/<action:\w+>/<id:\d+>" => "<controller>/<action>",
"<controller:\w+>/<action:\w+>" => "<controller>/<action>",
'<module:\w+>/<action:\w+>/<id:\d+>' => '<module>/default/<action>',
'<module:\w+>/<controller:\w+>' => '<module>/<controller>/index',
'bj|sh|gz|sz|cd|xa|wh|hz|tj|dl/?'=>'/sem/weight',
'bj|sh|gz|sz|cd|xa|wh|hz|tj|dl/<district:[0-9a-zA-Z\_\-]+>/?' => '/sem/weight',
'bj|sh|gz|sz|cd|xa|wh|hz|tj|dl/<district:[0-9a-zA-Z\_]+>/<cond:[0-9a-zA-Z\_]+>/?' => '/sem/weight',
],
],

0

Решение

Ваши правила должны быть до default правила или parameterized маршруты не следуют за ними, иначе ваши правила работают нормально на моей стороне. Я только что проверил все три из них, просто измените последовательность на следующую.

'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'bj|sh|gz|sz|cd|xa|wh|hz|tj|dl/?'=>'/sem/weight',
'bj|sh|gz|sz|cd|xa|wh|hz|tj|dl/<district:[0-9a-zA-Z\_\-]+>/?' => '/sem/weight',
'bj|sh|gz|sz|cd|xa|wh|hz|tj|dl/<district:[0-9a-zA-Z\_]+>/<cond:[0-9a-zA-Z\_]+>/?' => '/sem/weight',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
"<controller:\w+>/<action:\w+>/<id:\d+>" => "<controller>/<action>",
"<controller:\w+>/<action:\w+>" => "<controller>/<action>",
'<module:\w+>/<action:\w+>/<id:\d+>' => '<module>/default/<action>',
'<module:\w+>/<controller:\w+>' => '<module>/<controller>/index',

],
],
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]