2011-07-13 92 views
16

Hice un proyecto en CodeIgniter. Funciona bien en mi servidor local, pero da "500 Internal Server Error" en el servidor remoto. Este es el contenido de mi .htaccess archivo:CodeIgniter PHP Apache 500 Internal Server Error

RewriteEngine On 
RewriteBase /ezgov 
RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

mismo error con mi codeignador. presentando un problema con mi código, pero no hay problema mientras está en el servidor local. no se puede especificar un enlace porque cada vez que el enlace diferente obtiene un error de 500 .. –

Respuesta

3

Es probable que la razón se explica en el error_log. ¿Hay un error_log en el directorio raíz del sitio web? ¿Hay una carpeta de registros en otro lugar? El motivo se detallará allí.

35

abierto httpd.conf generalmente ubicado en el directorio de instalación de Apache en Windows

/apache/conf/httpd.conf

y

/etc/httpd/httpd.conf

en los sistemas basados ​​en Unix. httpd.conf es un archivo de configuración de Apache que almacena diversa información sobre el servidor.

Busque el módulo mod_rewrite.so o (mod_rewrite.c en casos excepcionales). El módulo mod_rewrite está desarrollado para reescribir las URL solicitadas sobre la marcha. La mayoría de las veces lo encontrará en estado comentado.

#LoadModule rewrite_module modules/mod_rewrite.*

Aquí # personaje representa que se comenta o discapacitados.

LoadModule rewrite_module modules/mod_rewrite.*

Retire # y reiniciar el servidor Apache HTTP utilizando el comando apache -k restart en ventanas o service httpd restart en sistemas Unix. También usa XAMPP/Wamp UI para reiniciar Apache en los sistemas de Windows.

A continuación, cree .htaccess archivo en el directorio raíz donde se encuentra su proyecto CodeIgniter y pegar siguiente código

# index file can be index.php, home.php, default.php etc. 
DirectoryIndex index.php 

# Rewrite engine 
RewriteEngine On 

# condition with escaping special chars 
RewriteCond $1 !^(index\.php|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 

Buscar siguiente archivo de configuración de CodeIgniter, generalmente se encuentra en su directorio de configuración.

./application/config/config.php

Abrir el archivo y crea $config['index_page'] valor vacío. que se parece a esto

/* 
    |-------------------------------------------------------------------------- 
    | Index File 
    |-------------------------------------------------------------------------- 
    | 
    | Typically this will be your index.php file, unless you've renamed it to 
    | something else. If you are using mod_rewrite to remove the page set this 
    | variable so that it is blank. 
    | 
*/ 
$config['index_page'] = ''; 

Ahora la historia ha terminado. Todo debería funcionar bien. Puede encontrar más información sobre httpd.config en Apache Module mod_rewrite. Espero que esto te ayude. ¡¡Gracias!!

+1

Esto resuelve mi problema cuando tengo CI en una subcarpeta de otro sitio web. Gracias hombre. –

+1

rocas. Cambié el proyecto a la misma carpeta, mismo DB, misma autorización, misma URL pero persiste el problema, te seguí y :) – Notepad

+1

Gracias por esto. Hizo todos los pasos excepto los pasos de httpd.conf (como soy en un VPS habría sido difícil) y funcionó. – cbyte

0

He resuelto este error.

me dieron otro nombre de la base de datos, he cambiado con los pasos siguientes:

  1. He creado la base de datos en el servidor usando cpanel
  2. He creado un usuario
  3. he asignado la base de datos creada previamente al usuario
  4. he cambiado la configuración de base de datos con nombre de usuario y nombredb etc.
6

publicar esto, j ust en caso de que ayude a alguien ...

Otras respuestas a esta pregunta asumen que usted tiene acceso a los archivos de configuración de apache. Pero si se encuentra en una plataforma de alojamiento compartido y no tiene acceso a directorios distintos a los que se supone que debe alojar sus archivos, el truco fue forzar a php a lanzar todos los errores, incluso si apache no pudiera hacerlo.

Abra "index.php" que reside en la carpeta raíz de su instalación codeigniter;

/*switch to development environment*/ 
define('ENVIRONMENT', 'development'); 

if (defined('ENVIRONMENT')) 
{ 
    switch (ENVIRONMENT) 
     { 
      case 'development': 
      error_reporting(E_ALL); 
      /*added line below*/ 
      ini_set('display_errors', '1'); 
      break; 
...... 

realizar el cambio anterior de inmediato empezó a mostrar lo que estaba mal con el código y yo era capaz de arreglarlo y ponerlo en funcionamiento.

No olvide configurar su entorno codeigniter en "producción" una vez que haya terminado de solucionarlo.

+1

gracias !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! – dowi

+0

intenté esto y no se visualizaron errores en la pantalla. ¿Dónde puedo encontrar estos errores? – kiirohana

+0

Compruebe la consola de su navegador y confirme si se trata efectivamente del error 500 o simplemente de una página en blanco. – jahackbeth

1

probar esto:

RewriteEngine on 
RewriteCond $1 !^(index\.php|public|\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 

Probablemente usted tiene problema con su htaccess archivo. Me ayudó también.

Cuestiones relacionadas