php - Obtención de un error 404 suave en la redirección a la página de inicio de sesión en Yii
google-webmaster-tools (3)
De manera simple, solo necesita identificarlo en el controlador. Si no es un inicio de sesión de usuario, se lo llevará automáticamente a la página de inicio de sesión. Como el siguiente ejemplo:
public function actionView($id)
{
if(!Yii::app()->user->isGuest)
{
$this->redirect(array(''/site/login''));
}
else
{
$this->render(''view'',array(
''model''=>$this->loadModel($id),
));
}
}
Esperemos poder ayudar
Estoy usando Yii 1.1.17, y noté en algunas de mis páginas donde quiero que los usuarios registrados puedan ver. Aparece un error 404 suave en las herramientas de los webmasters de Google.
Por ejemplo
http://www.example.com/sell/
cuando vaya a http://www.example.com/sell/view
, lo redireccionará a http://www.example.com/login
En este momento solo tengo 240 errores 404 blandos. La acción de visualización no se configuró para usuarios registrados solo al principio. Pero después de un par de meses después de lanzar mi sitio. Lo cambie. Entonces los errores comienzan a aparecer.
¿Hay una manera de solucionar esto? o un trabajo alrededor?
Aquí está accessRules para la acción de view
que es solo para usuarios registrados:
public function accessRules()
{
return array(
array(''allow'',
''actions''=>array(''index'', ''new''),
''users''=>array(''*''),
),
array(''allow'',
''actions''=>array(''view''),
''users''=>array(''@''),
),
array(''allow'',
''actions''=>array(''admin'',''delete'', ''update'', ''create'',''update'',''upload''),
''expression''=>''app()->user->isAdmin()'',
),
array(''deny'',
''users''=>array(''*''),
),
);
}
Usted podría agregar un deniedCallback
como
public function accessRules()
{
return array(
array(''allow'',
''actions''=>array(''index'', ''new''),
''users''=>array(''*''),
''deniedCallback'' => array($this, ''redirectToLogin''),
),
array(''allow'',
''actions''=>array(''view''),
''users''=>array(''@''),
''deniedCallback'' => array($this, ''redirectToLogin''),
),
array(''allow'',
''actions''=>array(''admin'',''delete'', ''update'', ''create'',''update'',''upload''),
''expression''=>''app()->user->isAdmin()'',
''deniedCallback'' => array($this, ''redirectToLogin''),
),
array(''deny'',
''users''=>array(''*''),
''deniedCallback'' => array($this, ''redirectToLogin''),
),
);
}
public function redirectToLogin($user = null, $rule = null){
Yii::app()->controller->redirect(''/login'', true, 403);
}
A continuación, puede redirigir con cualquier código de estado que desee.
Puede encontrar más información sobre deniedCallback
here .
Obtenga más información sobre la redirect
here
acaba de incrustar la biblioteca dbmanager / rbac en sus aplicaciones yii,
http://www.yiiframework.com/doc-2.0/yii-rbac-dbmanager.html