我想為 urlManager 規則的所有鍵設定前綴。目前我寫這樣的規則:
'rules' => [
'api' => '_public/site/index',
'api/<controller>/<action>' => '_public/<controller>/<action>',
etc
]
我想避免將api前綴復制/粘貼到所有規則中。因為它可能是 500 條規則。
有沒有辦法在某個地方定義一個前綴,以便Yii為每個規則鍵本身放置它?
$prefix并且$prefixRoute正在為值設定前綴,但我想要鍵。
也許這可以通過使用來完成.htaccess?但我不知道我應該在那里寫什么。
uj5u.com熱心網友回復:
yii\web\GroupUrlRule和它的屬性$prefix正是你要找的。
在你的情況下:
rules => [
// ...
new \yii\web\GroupUrlRule([
'prefix' => 'api',
'rules' => [
'<controller>/<action>' => '_public/<controller>/<action>',
// ... other /api/_ routes
],
]),
// ... other rules
]
我不確定將這樣的規則添加'/' => '_public/site/index',到組中是否適用于/api路由,或者您是否必須在組規則之外明確設定該規則。如果您要為組規則/api之外設定規則,最好將其放在組規則之前。
uj5u.com熱心網友回復:
具有屬性的 GroupUrlRule:前綴、路由前綴和規則就足夠了。您可以按如下方式使用它:
new GroupUrlRule([
'prefix' => 'api',
'routePrefix' => '',
'rules' => [
'' => '_public/site/index',
'<controller>/<action>' => '_public/<controller>/<action>',
]
])
將此添加到主組態檔中 urlManager 下的規則中。
uj5u.com熱心網友回復:
我在組態檔中添加了一行:
$config = [
'components' => [
'request' => [
// some code
'baseUrl' => '/api', // <--- this line
],
]
]
它奏效了。
$baseUrl- 應用程式的相對 URL。https://www.yiiframework.com/doc/api/2.0/yii-web-request#$baseUrl-detail
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/453360.html
