2016-01-21 2 views
16

Ich benutze Yii 1.1.17, und ich bemerkte auf einigen meiner Seiten, wo ich nur registrierte Benutzer in der Lage sein zu sehen, ich bin ein weicher 404 bekommen Fehler in den Google Webmaster-Tools.Erhalte einen weichen 404 Fehler auf Redirect zur Login-Seite in Yii

Zum Beispiel

http://www.example.com/sell/ wenn Sie http://www.example.com/sell/view gehen würde es Ihnen http://www.example.com/login

umleiten Gerade jetzt nur i 240 Soft 404-Fehler haben. Die Ansicht Aktion wurde nicht zuerst auf registrierte Benutzer eingestellt. Aber nach ein paar Monaten nach dem Start meiner Website. Ich habe es geändert. Dann beginnen die Fehler zu erscheinen.

Gibt es eine Möglichkeit, das zu beheben? oder eine Arbeit?

hier ist accessRules für die view Aktion, die nur für registrierte Benutzer ist:

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('*'), 
      ), 
     ); 
    } 
+0

die den Code des zugehörigen Controller zeigen bitte .. – scaisEdge

+0

@ scaisEdge aktualisierte Frage – user2636556

+0

Pls zeigen die 'urlManager' Regeln aus Ihrer' config.php' –

Antwort

1

Sie ein deniedCallback als

hinzufügen könnte
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); 
    } 

Sie können dann mit dem, was Statuscode umleiten Sie möchten . Sie können mehr über deniedCallbackhere herausfinden.

mehr über redirecthere Auf einfache Weise

+0

bekomme diesen Fehler jetzt' Fehlendes Argument 2 für DealershipController :: redirectToLogin() ' – user2636556

+0

aktualisierte Antwort zu haben Standardwerte null als 'function redirectToLogin ($ user = null, $ rule = null) {' – mani

+0

jetzt bekomme ich nur eine leere weiße Seite – user2636556

0

Finden Sie heraus, müssen Sie nur auf den Controller zu identifizieren. Wenn sich kein Benutzer anmeldet, wird er automatisch zur Anmeldeseite weitergeleitet. Wie das folgende Beispiel:

public function actionView($id) 
{ 
    if(!Yii::app()->user->isGuest) 
    { 
     $this->redirect(array('/site/login')); 
    } 
    else 
    { 
     $this->render('view',array(
     'model'=>$this->loadModel($id), 
     )); 
    } 
} 

kann Hoffentlich helfen

0

Sie nur DBManager/rbac Bibliothek auf Ihre yii Apps einbetten,

http://www.yiiframework.com/doc-2.0/yii-rbac-dbmanager.html