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',
],
],
Ваши правила должны быть до 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',
],
],
Других решений пока нет …