yii no puedo iniciar gii
-
14-12-2019 - |
Pregunta
Estoy desarrollando un sitio web con PHP Yii Framework y ahora estoy apilando, necesito iniciar gii, pero no puedo hacer esto.cuando escribo www.example.com/index.php/gii o www.example.com/gii me da este error:
/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.
No creo que el error se deba a la modificación de htaccess y la configuración principal, pero de todos modos aquí está el archivo de configuración 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>',
),
),
y .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]
Entonces, ¿puedes ayudarme, por favor?
Solución
Compruebe si el módulo GII en su archivo de configuración está ahí y no se ha comprometido. Si GII no está allí, debe agregarlo dentro de la matriz del módulo.
'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>***choose a password***
),
),
Más información para gii aquí
Otros consejos
Para usar esta ruta: index.php?r=gii/default/login
, debe desactivar el administrador de URL en /protected/config/main.php
También verifique urlManager
's rules
.Ese fue el problema para mí:
'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>',
// ...
),
),
),
Como FelikZ mencionó, esto podría deberse a que ha creado un tercer parámetro en una regla que usa \w+
en lugar del valor predeterminado \d+
y por lo tanto coincidirá con "gii" como controlador, "predeterminado" como acción e "iniciar sesión" como ID (o subacción, o lo que se mencione).
Mis reglas se parecían a las siguientes:
'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
La solución es agregar lo siguiente como primera regla para que gii llegue al lugar correcto:
'gii/<controller:\w+>/<action:[\w-]+>' => 'gii/<controller>/<action>',
Lo que debería hacer que todo tu urlManager
La configuración se parece a la siguiente:
'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>',
),
),
Este problema se produce debido a las dos sesiones de la OP, por ejemplo, la cookie Phpsessid, hay dos dominios dominios .site.ru y admin.site.ru dos sesiones diferentes.Eliminar cookies de Phpsessid e iniciar sesión en GII