1

最近codeIgniterを使い始めましたが、問題が発生しています。

viewフォルダに2つのファイルがあります

  1. index.php
  2. profile.php

URLにアクセスするとhttp://localhost/php/ci/index.php/、index.phpページが表示され、すべて問題ありません。

しかし、私がそれに行くとき、http://localhost/php/ci/profile.php/それは言います

The requested url was not found on server

なぜこれが起こっているのですか?

私のコントローラーファイルの名前は次のとおりです。

  1. home_control.php
  2. profile_control.php

home_controlはindex.phpと相互作用し、profile_controlはprofile.phpと相互作用します。

4

4 に答える 4

0

ファイルのセットアップ.htaccess方法とルーティングの仕組みについては、マニュアルを読んでください。index.phpのようなファイルを複数持つ必要はありません。1 つだけにする必要があります。

読み始めるべきリンクは次のとおりです。

于 2012-10-14T07:54:44.887 に答える
0

MVC の理解に根本的な欠陥があります。ドキュメント ルート(つまり、www ディレクトリ) にあるファイルは、実際にはすべての要求で CodeIgniter を開始する責任がindex.phpあります。それがURL バーに表示されているものです。index.php

フォルダー内で作成index.phpしたと言って混乱してindex.phpます。viewsフォルダー内にファイルを作成しviewsて、URL バーを使用してすぐにアクセスすることはできません。コントローラーを通過する必要があります。

アクセスして次http://localhost/php/ci/index.php/profile_controlcontrollers/profile_control.php含む場合::

<?php
class Profile_control extends CI_Controller{
    function __construct(){
        parent::__construct();
    }
    function index(){
        $this->load->view('profile')
    }
}

中身が見えるようになりますviews/profile.php

混乱を避けるために、先に進む前にこれを読むことが不可欠です

于 2012-10-14T07:56:20.593 に答える
0

他の人が言ったように。すべてが index.php を通過します。しかし、実際にはそれを非表示にして、URL に入力する必要がないようにすることができます。

applications/config/config.php に移動し、次のようなものを見つけます。

/*
|--------------------------------------------------------------------------
| 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'] = "index.php";

index.php を削除します。そして、.htaccess (あなたの index.php の隣にあります) に、これを追加する必要があります:

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

すべてが機能する場合は、プロファイル コントローラーを次のように呼び出すことができますhttp://localhost/php/ci/profile_control。デフォルトでは index アクションを呼び出すのでpublic function index、そのコントローラーに があることを確認してください。URL構造は常にhttp://url.com/*controller*/*action*/*extra params here*

たとえばpublic function profile()、コントローラー内で別のアクション (関数) を呼び出したい場合は、この url を呼び出すことができますhttp://localhost/php/ci/profile_control/profile

$this->load->view('profile')で他のビュー ファイルを指定するのは、その 2 番目のアクションです。それはview/profile.phpファイルを呼び出します

この -> のようにそのアクションに値を渡すこともできますhttp://localhost/php/ci/profile_control/profile/id/7

あなたのプロファイルアクションでは、次のようにそれらの値を取得する必要があります

public function profile($action, $value)
{
    //$action = the word id and $value = the number 7
}
于 2012-10-14T08:15:06.800 に答える
0

次のコードを使用して、プロジェクトフォルダー内でアプリケーションフォルダーの外に別の .htaccess ファイルを作成できます

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

また、インデックスページのみが機能し、それが機能したという同じ問題がありました!

于 2019-07-18T07:42:03.363 に答える