Моя текущая настройка имеет следующую структуру URL
http://somedomain/blog/1/title
Если часть заголовка слага неверна, он будет перенаправлен на правильный слаг, однако, если вы введете следующий URL-адрес, вы получите 404 (слаг не указан):
Теперь я хочу перенаправить пользователя на правильный URL-адрес с помощью слага, например, в stackoverflow, если вы введете https://stackoverflow.com/users/1917403 если добавит мое имя пользователя в конец.
URL-менеджер
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'blog/<id:\d+>/<slug:[-a-zA-Z 0-9]+>' => 'blog/view',
],
],
И вот мое действие просмотра контроллера
public function actionView($id, $slug = null)
{
$model = $this->findModel($id);
$model->author_info = json_decode($model->author_info, true);
if ($slug != $model->slug) {
return $this->redirect(['blog/view', 'id' => $id, 'slug' => $model->slug]);
}
return $this->render('view', [
'model' => $model,
]);
}