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]
通常、WindowsのApacheインストールディレクトリにあるhttpd.confを開きます。
/Apache/conf/httpd.conf
そして
/etc/httpd/httpd.conf
unixベースのシステム。 httpd.confは、サーバーに関するさまざまな情報を格納するApache構成ファイルです。
モジュールmod_rewrite.so
または(まれにmod_rewrite.c
)を検索します。 mod_rewriteモジュールは、要求されたURLをその場で書き換えるために開発されました。ほとんどの場合、コメント付きの状態で見つかります。
#LoadModule rewrite_module modules/mod_rewrite.*
ここで#
文字は、コメント化または無効化されていることを表します。
LoadModule rewrite_module modules/mod_rewrite.*
#
を削除し、WindowsではApache -k restart
コマンドを、UNIXシステムではservice httpd restart
コマンドを使用してApache Httpサーバーを再起動します。また、XAMPP/Wamp UIを使用して、WindowsシステムでApacheを再起動します。
次に、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の詳細を確認できます。これがお役に立てば幸いです。ありがとう!!
これを投稿すると、誰かを助けるために...
この質問に対するその他の回答は、Apacheの構成ファイルにアクセスできることを前提としています。しかし、共有ホスティングプラットフォームを使用していて、ファイルをホストすることになっているディレクトリ以外のディレクトリにアクセスできない場合は、Apacheができなくても、phpにすべてのエラーをスローさせるのがトリックでした。
Codeigniterインストールのルートフォルダーにある「index.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;
......
上記の変更を行うと、すぐにコードの問題の表示が始まり、修正してそれを実行できるようになりました。
修正が完了したら、コードイグナイター環境を「本番」に設定することを忘れないでください。
原因はerror_logで説明されている可能性があります。 Webサイトのルートディレクトリにerror_logがありますか?他の場所にログフォルダーはありますか?理由はそこに詳述されています。
これを試してください:
RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1
おそらくあなたはあなたに問題があります htaccess ファイル。それも私を助けました。
このエラーを解決しました。
別のデータベース名が与えられましたが、次の手順で変更しました: