sir*_*jay 5 php yii2 yii2-advanced-app
在我的 Yii2 配置中,我有:
'components' => [
'urlManager' => [
'baseUrl' => '',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'search' => 'site/index',
...
],
...
Run Code Online (Sandbox Code Playgroud)
如果我去site.com/search它工作。如果我去site.com/site/index它也可以工作并显示相同的内容。如何重定向呼叫而不是仅显示站点/索引的响应?它还必须使用参数(site.com/site/index?param=1-> site.com/search?param=1)重定向
UrlManager 不会重定向。而是像 Web 服务器一样进行重写。它被称为路由。
如果您想在代码中进行重定向,可以使用Response::redirect(). 如果您没有SearchController可以将此语句放入操作的位置,则可以将其放入beforeAction事件中。您可以在配置数组中执行此操作:
[
'components' = [
...
],
'on beforeAction' => function ($event) {
if(Yii::$app->request->pathInfo === 'search') {
$url = 'site/index?' . Yii::$app->request->queryString;
Yii::$app->response->redirect($url)->send();
$event->handled = true;
}
}
]
Run Code Online (Sandbox Code Playgroud)
或者,如果您有SearchController使用:
class SearchController extends \yii\web\Controller {
public function actionIndex() {
$url = 'site/index?' . Yii::$app->request->queryString;
return $this->redirect($url);
}
}
Run Code Online (Sandbox Code Playgroud)
第三个选项是配置 Web 服务器来执行重定向。那将是最快的解决方案。
| 归档时间: |
|
| 查看次数: |
4874 次 |
| 最近记录: |