0

Codeigniter では、URL にコントローラーが指定されていない場合、常にデフォルトのコントローラーが呼び出されることを知っています。さらに、url に関数が指定されていない場合、デフォルトでコントローラーの index 関数が呼び出されます。ただし、ブラウザーのアドレス バーに次の URL を入力すると、それぞれ異なる結果が得られます。

http://localhost/appfolder/

http://localhost/appfolder/index.php/defaultController

最初の URL では、実際にユーザーがログインしていても、ユーザーはログインしていないようです。2 番目の URL は正常に機能し、ユーザーがログインしているかどうかに関係なく正しいことを行います。デフォルトのコントローラーの。最初の URL は、デフォルト コントローラのインデックス機能を実行していないように思えます。私が知っている限りでは、2 つの URL を入力すると異なる結果が生じる理由を理解しようと頭を悩ませています。つまり、どちらもデフォルト コントローラーのインデックス関数を呼び出すことになっています。私は codeigniter を使用する初心者のようなものです (現在約 2 か月半使用しています)。

これは編集です: ここでのコメントのほとんどが htaccess ファイルの使用に関するものであることは知っていますが、index.php が URL に含まれているかどうかに関係なく、同じように機能するはずではありませんか? 問題を特定するために私ができることについて、他に何か提案はありますか?

4

3 に答える 3

1

http://localhost/appfolder代わりにURL を介してサイトにアクセスする場合http://localhost/appfolder/index.php/defaultControllerは、サイトの webroot フォルダー (index.php を含むフォルダー) に .htaccess ファイルを設定する必要があります。これは、私が自分のサイトで使用しているものとほとんど同じです (セットアップ用にカスタマイズされています)。

RewriteEngine On
RewriteBase /

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

RewriteEngine On
RewriteBase /appfolder

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

多くの議論と他の方法を含む同様の質問: How to remove "index.php" in codeigniter's path

于 2012-11-21T08:48:13.113 に答える
0

ルート構成ファイルでデフォルトのコントローラーを設定します。

$route['default_controller'] = 'Blog';

ドキュメントから:

サイトのルート URL のみが要求された場合のように、URI が存在しない場合、CodeIgniter はデフォルトのコントローラーをロードするように指示できます。デフォルトのコントローラーを指定するには、application/config/routes.php ファイルを開き、この変数を設定します。

于 2012-11-21T08:13:17.147 に答える
0

ねえ、あなたのhtaccessファイルでこれを使ってください。うまくいくと思います........

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2012-11-21T08:59:09.457 に答える