在基本身份验证重定向url修改后

时间:2013-12-13 07:35:21

标签: php .htaccess url yii url-rewriting

我有一个使用Yii框架制作的网站。我已经使用HTTP身份验证(基本)进行用户登录。它工作正常。在身份验证之后,它会重新定向到用户个人资料,但是在附加了 www 部分 https 之后的网址中。 https://wwwhttps.example.com/directory/我也尝试使用.htaccess删除https部分,但没有运气。这是我的.htaccess配置:

#Options +FollowSymLinks 
 IndexIgnore */*
 RewriteEngine on
# if a directory or a file exists, use it directly 
 RewriteCond %{REQUEST_FILENAME} !-f 
 RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php 
 RewriteRule . index.php

#Basic ldap authentication goes here ...

RewriteCond %{HTTP_HOST} ^wwwhttps\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,QSA,NC,L]

和登录控制器代码:

public function actionLogin()
    {
        $this->layout='//layouts/login_layout';
        if(isset($_SERVER['REMOTE_USER']) && $_SERVER['REMOTE_USER']!='')
        {
            $username = $_SERVER['REMOTE_USER'];
            $user = User::model()->findByAttributes(array('username'=>$username)); 

            $ui = UserIdentity::impersonate($user->id);
                if($ui)
                    Yii::app()->user->login($ui, 0);
                    $this->redirect(yii::app()->getBaseUrl(true).'/user/profile');    
    }       
 }

是因为基本身份验证还是其他原因?如果我不使用基本身份验证它工作正常....请帮助我。 在此先感谢!!!

3 个答案:

答案 0 :(得分:2)

将.htaccess ldap验证码更改为,

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,QSA,NC,L]

所以整个htaccess看起来如下,

#Options +FollowSymLinks 
 IndexIgnore */*
 RewriteEngine on
# if a directory or a file exists, use it directly 
 RewriteCond %{REQUEST_FILENAME} !-f 
 RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php 
 RewriteRule . index.php

#Basic ldap authentication goes here ...
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,QSA,NC,L]

答案 1 :(得分:2)

@Ronit Adhikari:环境变量可能存在问题。你应该检查一次。

答案 2 :(得分:2)

我说得对,我必须在main.php中设置hostinfo和baseurl,因为我的webroot是公共文件夹中的目录:

request' => array(
                'hostInfo' => 'https://www.example.com',
                'baseUrl' => '/webroot',
           ),