Yii无法启动gii

时间:2012-03-14 17:30:06

标签: php redirect frameworks yii gii

我正在使用PHP Yii Framework开发网站,我现在正在堆栈,我需要启动gii,但我不能这样做。当我输入www.example.com/index.php/gii或www.example.com/gii时,它会给我这个错误:

    /gii/default/login // <- website redirects to here

    This webpage has a redirect loop
    The webpage at http://www.example.com/gii/default/login has resulted in too many redirects.
Clearing your cookies for this site or allowing third-party cookies may fix the problem. 
If not, it is possibly a server configuration issue and not a problem with your computer.

我不认为错误是因为修改了htaccess和主配置,但无论如何这里是main.php配置文件:

    'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
            'site/page/<view:\w+>'=>'site/page',
            '<controller:\w+>/<cact:\w+>/<action:\w+>'=>'<controller>/<cact>',
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),

和.htaccess:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

#non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# 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 [L]

那么,你能帮助我吗?

5 个答案:

答案 0 :(得分:6)

要使用此路径:index.php?r=gii/default/login,您必须在/protected/config/main.php

中关闭网址管理器

答案 1 :(得分:5)

同时检查urlManager的{​​{1}}。这对我来说是个问题:

rules

答案 2 :(得分:4)

检查配置文件中的gii模块是否存在且是否取消注释。 如果gii不在那里,你应该在模块数组中添加它。

'modules'=>array(
    'gii'=>array(
        'class'=>'system.gii.GiiModule',
        'password'=>***choose a password***
    ),
),

gii here

的更多信息

答案 3 :(得分:4)

FelikZ mentioned类似,这可能是因为您在使用\w+而不是默认\d+的规则中创建了第三个参数,因此将匹配“gii”作为控制器, “默认”作为动作,“登录”作为ID(或子动作,或任何提到的内容)。

我的规则如下:

'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

修复方法是添加以下内容作为第一条规则,以使gii位于正确的位置:

'gii/<controller:\w+>/<action:[\w-]+>' => 'gii/<controller>/<action>',

哪个应该使整个urlManager配置看起来如下所示:

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'rules'=>array(
        'gii/<controller:\w+>/<action:[\w-]+>' => 'gii/<controller>/<action>',

        '<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
),

答案 4 :(得分:1)

出现此问题是因为OP的两个会话,例如cookie PHPSESSID有两个域.site.ru和admin.site.ru两个不同的会话。删除PHPSESSID cookie并登录gii