2010-09-20 28 views
17

Estoy usando CodeIgniter para dos aplicaciones (una pública y una aplicación de administrador). Los elementos importantes de la estructura del documento son:CodeIgniter 404 Página no encontrada, pero ¿por qué?

/admin 
/admin/.htaccess 
/admin/index.html 
/application 
/application/admin 
/application/public 
/system 
.htaccess 
index.php 

El archivo /admin/.htaccess se ve así:

DirectoryIndex index.php 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

El /admin/index.php tiene los siguientes cambios:

$system_folder = "../system"; 
$application_folder = "../application/admin"; (this line exists of course twice) 

Y el /application/admin/config/routes.php contiene lo siguiente:

$route['default_controller'] = "welcome"; 
$route['admin'] = 'welcome'; 

Bienvenido es mi controlador predeterminado.

Cuando llamo al Dominio/administrador obtengo un error de 404 Página no encontrada. Cuando llamo al Dominio/administrador/bienvenido todo funciona bien. En los registros de depuración me sale el siguiente mensaje de error:

DEBUG - 2010-09-20 16:27:34 --> Config Class Initialized 
DEBUG - 2010-09-20 16:27:34 --> Hooks Class Initialized 
DEBUG - 2010-09-20 16:27:34 --> URI Class Initialized 
ERROR - 2010-09-20 16:27:34 --> 404 Page Not Found --> admin 

Extrañamente esta configuración funciona perfectamente en mi instalación de MAMP local (con la localdomain/admin /), pero cuando publico y probarlo en el "en vivo" servidor, acabo de recibir errores 404.

¿Alguna idea? ¿Qué estoy haciendo mal? Gracias C.

+0

Solo un pensamiento, es tal vez el servidor en vivo que no ejecuta mod_rewrite? ¿El servidor en vivo te da solo 404 u otros ocasionales? – Fanis

+0

Parece estar funcionando - Acabo de probarlo con un catch all non-www-domains y redirigir a google.com. Los errores 404 definitivamente están siendo generados por CI (porque usan CSS). – Joseph

+0

Solo quería publicar que si está ejecutando una NUEVA INSTALACIÓN de Codeigniter 3 y tiene un espacio en el nombre de la carpeta de alojamiento, servirá un 404. Versión 3.0.0 –

Respuesta

15

La causa del problema era que el servidor ejecutaba PHP utilizando FastCGI.

Después de cambiar el config.php para

$config['uri_protocol'] = "REQUEST_URI"; 

todo lo trabajado.

+0

El enrutamiento comenzó a funcionar, pero ahora la CLI devuelve la pantalla 'Bienvenido a CodeIgniter'. de todos modos a su alrededor? He publicado más información [aquí] (http://stackoverflow.com/questions/25545696/codeigniter-htaccess-rewriterule-result-in-404-page-not-found#comment39888065_25545696) – Kuf

1

Su estructura de carpeta/archivo me parece un poco extraña. No puedo entender cómo lo tienes preparado.

Hola Estoy usando CodeIgniter para dos aplicaciones (una pública y una aplicación de administrador).

Esto me parece que tiene dos instalaciones de CI separadas. Si este es el caso, recomendaría no hacerlo. ¿Por qué no simplemente manejar todas las cosas de administración en un controlador de administrador? Si desea dos instalaciones de CI separadas, asegúrese de que sean entidades claramente distintas y que las dos no estén en conflicto entre sí. Esta línea:

$system_folder = "../system"; 
$application_folder = "../application/admin"; (this line exists of course twice) 

Y el lugar que dijeron que esto existe (/admin/index.php...or querías decir/admin/application/config?) Me tiene rascándome la cabeza. ¿Tiene admin/application/admin y una carpeta del sistema en el nivel superior?

+0

Así es como estructurar mis aplicaciones. Tengo una aplicación de administrador y una aplicación web. Ambos comparten una carpeta del sistema ('../system'), y cada uno tiene una carpeta de aplicaciones separada ('../application/admin'), ('../application/website'). – Matthew

+0

Está basado en esto: http://codeigniter.com/user_guide/general/managing_apps.html Solo hay una carpeta del sistema. Moví la carpeta de la aplicación al mismo nivel que la carpeta del sistema. – Joseph

+0

Quise decir que en el archivo /admin/index.php cambié las líneas 26, 43 y 101 – Joseph

1

tenemos que dar el nombre del controlador en los casos más bajos en el lado del servidor

$this->class = strtolower(__CLASS__); 
0

En mi caso lo estaba utilizando en localhost y se olvidó de cambiar RewriteBase en .htaccess.

-2

Consulte el Directorio encontrado ningún espacio Codignater tiempos muchos dan error al espacio en su Directorio de Codignater Eliminar todo el espacio desde Directorio Ejemplo

ITWORLD compk 

cambiarlo a

ITWORLD_COM_PK 
4

Dejando esta respuesta aquí para otros que se encontraron con mi situación.

Mi aplicación codeigniter funcionaba bien en localhost/WAMP, pero no pudo enrutar y produjo 404 errores no encontrados al presionar a una instancia de AWS EC2. Mi problema fue resuelto por la respuesta de HEREhtaccess works in localhost but doesn't work in EC2 instance

(ruta a mi página de administración) {dominio}/admin estaba produciendo 404

el archivo /etc/httpd/conf/httpd.conf necesita ser modificado.

-después de todas las instancias de "DocumentRoot "/ var/www/html"" (2 plazas) "AllowOverride None" necesitaba ser cambiado a "AllowOverride All".

Se reinició la instancia de EC2 desde el panel AWS.

{domain}/admin ahora está disponible y funciona según lo previsto.

Espero que esto ayude a alguien más me haya ayudado!

+0

Gracias, funcionó para mí –

3

Puede probar una de dos cosas o una combinación de ambas.

  1. Asegúrese de que el nombre de su controlador comience con una letra mayúscula. por ejemplo, "Mycontroller.php"
  2. Si no ha realizado ningún cambio en su ruta, por alguna extraña razón, es posible que deba incluir letras mayúsculas en su url. Por ejemplo, si su controlador es 'Mycontroller.php' con una función llamada 'testfunc' dentro de él, su URL se verá así: "http://www.yourdomain/index.php/Mycontroller/testfunc". Tenga en cuenta la letra mayúscula. (Estoy suponiendo que no haya agregado el archivo .htaccess para eliminar la parte 'index.php'. Si es así, simplemente sacarlo de la URL.)

espero que esto ayude a alguien

+0

En efecto, el controlador debe estar en mayúscula, pero para acceder a él a través de la URL no es necesario que coloque la letra mayúscula en la URL. – PhoenixNoor

0

que tenían el mismo problema después de migrar a una nuevo entorno y fue simplemente que el servidor no ejecutó mod_rewrite

una rápida sudo a2enmod rewrite continuación sudo systemctl restart apache2

y problema resuelto ...

, gracias @fanis que señalaron que en su comentario sobre la cuestión.

Cuestiones relacionadas