Yii2:如何使用301重定向旧URL?

时间:2017-10-17 08:45:46

标签: php yii2 yii-url-manager

由于搜索引擎优化的目的,我想从我的网站的旧版本中找到一些我希望在Yii2中重定向到新版本的网址,例如。 /about-us.php/about。我该怎么做?

我无法使用.htaccess,我无法使用urlManager规则,因为需要设置HTTP响应状态301。

我在bootstrap类中尝试了以下内容,但即使代码执行,我仍然只是在转到旧URL时得到404:

if (preg_match("|^/about.php|", $_SERVER['REQUEST_URI'])) {
    Yii::$app->response->redirect('/about', 301)->send();
    return;
}

3 个答案:

答案 0 :(得分:3)

有一种更清洁,更简单的方法:

class MyController extends Controller
{
    public function beforeAction($action)
    {
        if (in_array($action->id, ['about-us'])) {
            Yii::$app->response->redirect(Url::to(['about']), 301);
            Yii::$app->end();
        }
        return parent::beforeAction($action);
    }
}

希望这会有所帮助!

答案 1 :(得分:2)

我自己找到了答案。我的引导尝试并不是那么糟糕,我只需要添加Yii::$app->end()

if (preg_match("|^/about-us.php|", $_SERVER['REQUEST_URI'])) {
    Yii::$app->response->redirect('/about', 301)->send();
    Yii::$app->end();
    return;
}

答案 2 :(得分:0)

Yii 1.1

public function actionOldPage()
{
    Yii::app()->request->redirect('redirect/to/this', true, 301);
}

首先,我在config / main.php中尝试了UrlManager

'oldPage'=>'newPage'

但它的重定向为302