CodeIgniterを使用したことはありませんし、PHPフレームワークは言うまでもありません。試してみようと思いました。 URLからindex.phpを削除してもページにアクセスできないように見えることを除いて、すべてうまくいきます。
MVC構造を使用したことがないので、学習しながら学習しているので、これを間違えても許してください。
localhost/ci/aboutと入力するだけで、「about_page.php」という名前で作成したビューにアクセスしようとしていますが、現在は、 localhost/ci/index.php/aboutを使用して
ページのコントローラーは次のとおりです:/ application/controllers/about.php
ページのモデル:/ application/models/about_model.php
そしてページのビューは:/ application/views/about_page.php
この問題の解決策を探しましたが、見つかりませんでした。すでに検索した場所は次のとおりです。
CodeIgniter-index.phpの削除
Codeigniter-urlからindex.phpを削除する方法?
http://www.farinspace.com/codeigniter-htaccess-file/
CodeIgniterの 'application'フォルダーには、Allow Deny From All
のみを含む.htaccessファイルが付属しています。そこで、ルートディレクトリに新しい.htaccessファイルhttp://localhost/ci/.htaccess
を作成し、次のコードを追加しました。
RewriteEngine On
RewriteBase /ci
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
.htaccessファイルがルートディレクトリにある場合、500 Internal Server Errorが発生します。まったく同じファイルをアプリケーションフォルダーにコピーすると、500エラーはなくなりますが、localhost/ci/aboutを使用してaboutページにアクセスできません
既に$config['index_page'] = 'index.php';
を$config['index_page'] = '';
に変更し、$config['uri_protocol'] = 'AUTO';
を$config['uri_protocol'] = 'REQUEST_URI';
に変更しようとしましたが、内部サーバーエラーが引き続き発生しています。
Httpd.confファイルにアクセスしてmod_rewrite.soモジュールのコメントを外したので、mod_rewriteがアクティブであることがわかります。
なぜこれが機能しないのか、どのように私はこの仕事を得ることができるのでしょうか?このテーマに関するStackOverflowの質問はたくさんありますが、私の質問に答える質問は見つかりませんでした。
私はこれを正しくやっていますか? localhost/ci/aboutにアクセスしてaboutページにアクセスできますか、または 'application'に 'about'ディレクトリを作成する必要がありますか'ディレクトリ?
index.php
を削除するには3つの手順があります。
application/config.php
ファイルに以下の変更を加えます
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your Ci folder_name';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
以下のコードを使用して、ルートディレクトリに.htaccess
ファイルを作成します
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
書き換えエンジンを有効にします(まだ有効になっていない場合)
i。まず、次のコマンドで開始します。
a2enmod rewrite
ii。ファイルの編集/etc/Apache2/sites-enabled/000-default
すべてのAllowOverride None
をAllowOverride All
に変更します。
注:最新バージョンでは、/etc/Apache2/Apache2.conf
ファイルを変更する必要があります
iii。次のコマンドでサーバーを再起動します。
Sudo /etc/init.d/Apache2 restart
.htaccess
は少しずれています。私のものを見てください:
RewriteEngine On
RewriteBase /codeigniter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system)
RewriteRule ^(.*)$ /codeigniter/index.php?/$1 [L]
2つの場所で「codeigniter」に注意してください。
その後、設定で:
base_url = "http://localhost/codeigniter"
index = ""
必要に応じてcodeigniterを「ci」に変更します
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /dmizone_bkp
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system)
RewriteRule ^(.*)$ /dmizone_bkp/index.php?/$1 [L]
</IfModule>
これは私のために働く
。htaccessファイルをルートフォルダーに移動します(私の場合、アプリケーションフォルダーの前に配置します)
RewriteEngine on
RewriteBase /yourProjectFolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
私のconfig.phpは次のようになります(application/config/config.php)
$config['base_url'] = "";
$config['index_page'] = "index.php";
$config['uri_protocol'] = "AUTO";
あなたのために働いているかどうかも教えてください!乾杯!
私はこのようなものを使用しています- codeigniter-htaccess-file 、それは最初から良い記事です。
$config['index_page'] = "";
$route['default_controller']="home";
CI(2.1.3)のクリーンインストールを実行している場合、実際にはそれほど問題はありません。
読む
沼サーバーのユーザーについては、@ Raul Chipadのソリューションの最初の2つの手順に従ってください:
Linux Ubuntu 14でも同様の問題がありました。
ブラウザに403エラーメッセージが常に表示され、ここですべての回答を読んだ後、何が間違っているのかわかりませんでした。
その後、Apacheのエラーログに到達し、最終的に少し予想外であるが完全に論理的なヒントを得ました。
codeIgniterメインフォルダーには、フォルダーに対するX権限がありませんでした。他のすべてをWebサーバーが読み取れないようにします。
chmod ugo + x yourCodeIgniterFolder
最初の問題を修正。 403エラーを強制終了しました。
しかし、その後、エラー500が発生し始めました。
Culpritは.htaccessの間違った設定行でした
その後、PHPエラーが発生し始めました。
Culpritは、メインフォルダーと同じ問題でしたが、アプリケーションフォルダーとシステムフォルダーの内部フォルダーに対する「その他」権限のXフラグはありませんでした。
この質問に対する私の2セント:READ Apache Error.log。
ただし、セキュリティの問題にも注意してください。 CodeIgniterは、アプリケーションとシステムフォルダーをWebスペースから移動することを推奨しています。したがって、これらのフォルダーがWebスペースに残っている場合、アクセス許可の変更には細心の注意を払ってください。
ここで言及する価値があるもう1つのことは、ダウンロードしたCodeIgniterアーカイブをWebスペースに直接解凍したことです。フォルダーのアクセス許可は、アーカイブから直接作成される可能性があります。与えられているように、それらは安全ですが、フォルダアクセスの問題(Unixのようなシステムで)はCodeIgniterのマニュアルに記載されていません https://codeigniter.com/user_guide/installation/index.html そしておそらくそれは言及されるでしょう運用システムのセキュリティを厳しく保ちながら、CodeIgniterのセキュリティを緩和する方法に関するガイドラインがあります(前述のように、いくつかのセキュリティヒントがマニュアルにすでにあります)。
動作しない場合
$config['uri_protocol'] = 'AUTO';
に変更する
$config['uri_protocol'] = 'PATH_INFO';
動作していない場合は、それを変更します
$config['uri_protocol'] = 'QUERY_STRING';
これを使用する場合
$config['uri_protocol'] = 'ORIG_PATH_INFO';
htaccessにないURLへのリダイレクトまたはヘッダーの場所が機能しない
デフォルトでは、以下はapplication
フォルダーにあり、提案されているようにルートdirに移動します。
leave the .htaccess file in CI root dir
これを.htaccessファイルに追加するだけです:
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]