如何为url规则的所有键设置前缀?
How to set prefix to all keys of url rules?
我想为 urlManager 规则的所有键设置前缀。目前我这样写规则:
'rules' => [
'api' => '_public/site/index',
'api/<controller>/<action>' => '_public/<controller>/<action>',
etc
]
我想避免所有规则的 copy/past-ing of api
前缀。因为它可能是 500 条规则。
有没有办法在某个地方定义一个前缀,以便 Yii 为每个规则键本身放置它?
$prefix
和 $prefixRoute
正在为值设置前缀,但我想要键。
也许这可以通过使用 .htaccess
来完成?但是不知道应该写什么。
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
设置规则,最好将其放在组规则之前。
具有以下属性的 GroupUrlRule:前缀、路由前缀和规则就足够了。您可以按如下方式使用它:
new GroupUrlRule([
'prefix' => 'api',
'routePrefix' => '',
'rules' => [
'' => '_public/site/index',
'<controller>/<action>' => '_public/<controller>/<action>',
]
])
将此添加到主配置文件中 urlManager 下的规则中。
我在配置文件中添加了一行:
$config = [
'components' => [
'request' => [
// some code
'baseUrl' => '/api', // <--- this line
],
]
]
它奏效了。
$baseUrl
- 应用程序的相对 URL。 https://www.yiiframework.com/doc/api/2.0/yii-web-request#$baseUrl-detail
我想为 urlManager 规则的所有键设置前缀。目前我这样写规则:
'rules' => [
'api' => '_public/site/index',
'api/<controller>/<action>' => '_public/<controller>/<action>',
etc
]
我想避免所有规则的 copy/past-ing of api
前缀。因为它可能是 500 条规则。
有没有办法在某个地方定义一个前缀,以便 Yii 为每个规则键本身放置它?
$prefix
和 $prefixRoute
正在为值设置前缀,但我想要键。
也许这可以通过使用 .htaccess
来完成?但是不知道应该写什么。
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
设置规则,最好将其放在组规则之前。
具有以下属性的 GroupUrlRule:前缀、路由前缀和规则就足够了。您可以按如下方式使用它:
new GroupUrlRule([
'prefix' => 'api',
'routePrefix' => '',
'rules' => [
'' => '_public/site/index',
'<controller>/<action>' => '_public/<controller>/<action>',
]
])
将此添加到主配置文件中 urlManager 下的规则中。
我在配置文件中添加了一行:
$config = [
'components' => [
'request' => [
// some code
'baseUrl' => '/api', // <--- this line
],
]
]
它奏效了。
$baseUrl
- 应用程序的相对 URL。 https://www.yiiframework.com/doc/api/2.0/yii-web-request#$baseUrl-detail