Yii не может начать GII - PullRequest
       42

Yii не может начать GII

4 голосов
/ 14 марта 2012

Я занимаюсь разработкой веб-сайта с использованием 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 ]

6 голосов
/ 08 октября 2012

Чтобы использовать этот путь: index.php?r=gii/default/login, вы должны отключить менеджер URL в /protected/config/main.php

5 голосов
/ 12 ноября 2012

Также проверьте urlManager s rules.Это была проблема для меня:

'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>',
            // ...
        ),
     ),
 ),
4 голосов
/ 16 июля 2014

Как и FelikZ упомянул , это может быть потому, что вы создали третий параметр в правиле, которое использует \w+ вместо значения по умолчанию \d+ и, следовательно, будет соответствовать "gii" в качестве контроллера "default »как действие и« login »как идентификатор (или вспомогательное действие, или что-либо упомянутое).

Мои правила выглядели следующим образом:

'<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 голосов
/ 14 марта 2012

Проверьте, есть ли модуль gii в вашем файле конфигурации, и он не прокомментирован. Если gii отсутствует, вы должны добавить его в массив модулей.

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

Подробнее о gii здесь

1 голос
/ 08 ноября 2013

Эта проблема возникает из-за двух сеансов OP, например, cookie PHPSESSID, там два домена, домен .site.ru и admin.site.ru два разных сеанса. Удалите файлы cookie PHPSESSID и войдите в систему gii

...