2012-03-14 43 views
4

我正在用PHP Yii Framework開發網站,我現在是堆棧,我需要啓動gii,但是我不能這樣做。當我鍵入www.example.com/index.php/gii或www.example.com/gii它給了我這個錯誤:Yii無法啓動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] 

所以你能幫助我嗎?

回答

4

檢查配置文件中的gii模塊是否存在並且未註釋。 如果gii不在那裏,你應該在模塊數組中添加它。對於GII here

+0

這是準備好的設置在main.php中,我能夠使用Gii,直到我將默認網址更改爲用戶友好的URL – Irakli 2012-03-14 18:21:43

+1

我在第二塊代碼中發佈的鏈接表明如果您使用用戶友好的網址,您必須執行的操作。 – 2012-03-14 18:24:39

+0

非常感謝,一切正常!再次感謝你! – Irakli 2012-03-14 18:40:04

6

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

更多信息要使用此路徑:index.php?r=gii/default/login,你必須關閉網址經理/protected/config/main.php

5

還要檢查urlManagerrules。這是這個問題對我來說:發生是因爲OP的兩會

'components' => array(
    'urlManager' => array(
     'urlFormat' => 'path', 
     'showScriptName' => false, 
     'rules' => array(
      // ... 
      // will handle `gii/default/login` uri and makes infinite redirection loop circle 
      '<controller:\w+>/<action:\w+>/<sub_action:\w+>'=>'<controller>/<action>', 
      // ... 
     ), 
    ), 
), 
1

這個問題,例如餅乾PHPSESSID有兩個域域.site.ru和admin.site.ru兩個不同的會話。刪除PHPSESSID餅乾,登錄到GII

+0

這解決了我的問題 – 2015-05-12 00:40:56

4

FelikZ mentioned,這可能是因爲你已經創建了一個使用\w+,而不是默認\d+,因此將匹配「GII」作爲控制器的規則第三PARAM,「默認」爲動作和「登錄」作爲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>', 
    ), 
),