44

PHPフレームワークは言うまでもなく、CodeIgniterを使用したことがないので、試してみようと思いました。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 には、.htaccess ファイルが「application」フォルダにあり、.htaccess ファイルのみが含まれていますAllow Deny From All。そこで、ルート ディレクトリに新しい .htaccess ファイルを作成し、次のhttp://localhost/ci/.htaccessコードを追加しました。

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

.htaccess ファイルがルート ディレクトリにある場合、500 内部サーバー エラーが発生します。まったく同じファイルをアプリケーション フォルダーにコピーすると、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」ディレクトリを作成する必要がありますか?

4

11 に答える 11

88

削除する手順は 3 つありますindex.php

  1. application/config.phpファイルに以下の変更を加えます

    $config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your Ci folder_name';
    $config['index_page'] = '';
    $config['uri_protocol'] = 'AUTO';
    
  2. .htaccess以下のコードを使用して、ルート ディレクトリにファイルを作成します

    RewriteEngine on
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    
  3. 書き換えエンジンを有効にします (まだ有効になっていない場合)

    私。まず、次のコマンドで開始します。

    a2enmod rewrite
    

    ii. ファイルを編集する/etc/apache2/sites-enabled/000-default

    にすべて変更AllowOverride NoneAllowOverride Allます。

    /etc/apache2/apache2.conf注:最新バージョンでは、ファイルを変更する必要があります

    iii. 次のコマンドでサーバーを再起動します。

    sudo /etc/init.d/apache2 restart
    
于 2013-02-11T07:12:41.503 に答える
8

あなた.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」に変更します

于 2013-02-09T01:39:21.207 に答える
4
<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> 
于 2014-03-18T06:13:12.693 に答える
2

私はこのようなものを使用しています - codeigniter-htaccess-file、それは良い記事です。

  • .htaccess ファイルを CI ルート ディレクトリに残す
  • mod_rewrite がオンになっていることを確認してください
  • タイプミスがないか確認してください (つまり、コントローラーファイル/クラス名)
  • /application/config/config.php セットで$config['index_page'] = "";
  • /application/config/routes.php でデフォルトのコントローラーを設定します$route['default_controller']="home";

CI (2.1.3) のクリーン インストールを実行している場合、間違っている可能性はほとんどありません。

  • 2つの設定ファイル
  • コントローラ
  • .htaccess
  • mod_rewrite

読んだ

于 2013-02-09T02:49:32.910 に答える
2

wamp サーバーのユーザーは、@Raul Chipad のソリューションの最初の 2 つの手順に従ってください。

  1. ワンプ アイコン (通常は緑色) をクリックし、[Apache] > [Apache モジュール] > [rewrite_module] に移動します。「rewrite_module」にチェックを入れる必要があります! そして、それは行く方法です!
于 2015-05-29T04:42:12.427 に答える
1

働いていない場合

$config['uri_protocol'] = 'AUTO';

に変更します

$config['uri_protocol'] = 'PATH_INFO';

機能しない場合は、に変更します

$config['uri_protocol'] = 'QUERY_STRING';

これを使えば

$config['uri_protocol'] = 'ORIG_PATH_INFO';

htaccessにないURLへのリダイレクトまたはヘッダーの場所では機能しません。機能するには、htaccessにURLを追加する必要があります

于 2013-05-16T08:34:13.540 に答える
0

これを .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]
于 2017-06-07T14:28:31.700 に答える