CodeIgniter PHP Apache 500 Internal Server Error

我在CodeIgniter中做了一个项目。它在我的本地主机上工作正常,但在远程服务器上给出“500内部服务器错误”。这是我的文件内容:.htaccess

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]

答案 1

打开 httpd.conf 通常位于 Apache 安装目录中的窗口中

/apache/conf/httpd.conf

/etc/httpd/httpd.conf

在基于 Unix 的系统中。httpd.conf是一个Apache配置文件,它存储有关服务器的各种信息。

搜索模块或(在极少数情况下)。开发mod_rewrite模块以动态重写请求的 URL。大多数时候,你会发现处于注释状态。mod_rewrite.somod_rewrite.c

#LoadModule rewrite_module modules/mod_rewrite.*

此处的字符表示它被注释或禁用。#

LoadModule rewrite_module modules/mod_rewrite.*

在 Windows 或 unix 系统中使用命令删除并重新启动 Apache Http Server。您还可以使用 XAMPP/Wamp UI 在 Windows 系统中重新启动 Apache。#apache -k restartservice httpd restart

接下来,在 CodeIgniter 项目所在的根目录中创建文件,并粘贴以下代码.htaccess

# 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]

接下来查找 CodeIgniter 配置文件,通常位于其配置目录中。

./application/config/config.php

打开文件并将值设为空。看起来像这样$config['index_page']

/*
  |--------------------------------------------------------------------------
  | 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'] = '';

现在故事结束了。一切都应该工作正常。您可以在Apache Module mod_rewrite找到有关httpd.config的更多信息。希望这对您有所帮助。谢谢!!


答案 2

发布这个,以防万一它帮助某人...

这个问题的其他答案假设您有权访问apache的配置文件。但是,如果您在共享托管平台上,并且除了应该托管文件的目录之外,无法访问其他目录:诀窍是强制php抛出所有错误,即使apache无法。

打开驻留在代码图元安装根文件夹中的“索引.php”;

/*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;
......

进行上述更改立即开始显示代码的错误,我能够修复它并使其启动并运行。

修复完成后,不要忘记将代码标记器环境设置为“生产”。


推荐