1

タイトルがバカっぽい。しかし、私は問題に遭遇しました。今はhttp://ci.tao2tw.comと入力するだけで、 index.php/entry 関数にルーティングできますが、 http://ci.tao2tw.com/order と入力すると、ルーティングしたいです別のコントローラ order.php に、しかし、それは動作しません! 私の設定に何か問題がありますか??

今、 http://ci.tao2tw.com/order/testで注文コントローラーの下でテスト機能を実行できません 。代わりに、htpp://ci.tao2tw.com/ index.php /order/testと入力する必要があります。

よろしくお願いします〜 ここに画像の説明を入力 ここに画像の説明を入力

routes.php で

$route['default_controller'] = "index/entry";
$route['order'] = "order"; 
$route['404_override'] = '';

config.php で

$config['base_url'] = 'http://ci.tao2tw.com/';
$config['index_page'] = '';

controller/index.php で (正常に動作します)

class Index extends CI_Controller {

    public function __construct() // to remember use public
    {
        parent::__construct(); 
        $this->load->helper('url');
        //anchor(); 
    }
    public function entry() //just show index
    {
        $this->load->view('index_view',$data);      

    }

}

controller/order.php で (作業なし)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Order extends CI_Controller {

    public function __construct() // to remember use public
    {
        parent::__construct(); 
        $this->load->helper('url');

    }
    public function fill($action) // 顯示填寫表單
    {
        echo "test";
    }
   //http://codeigniter.com/user_guide/libraries/uri.html
    public function order($action)
    {
        echo $action;
    }
}

?>

.htaccess ファイル

RewriteEngine on
RewriteCond $1 !^(index\.php|css|flash|images|img|includes|js|language|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
~
4

4 に答える 4

4

すべてのコントローラーは、 index.phpファイルの後に CI で呼び出す必要があります。

したがって、.htaccess ファイルを使用しない場合、注文コントローラーへのリンクは次のようになります。

http://ci.tao2tw.com/index.php/order/

.htaccess を使用すると、index.php ファイルをスキップできます

 RewriteRule ^(.*)$ index.php/$1 [L]

コントローラーを次のように呼び出すことができます:

http://ci.tao2tw.com/order

次に、注文コントローラーでメソッドを呼び出したい場合、URL は次のとおりです。

于 2012-08-25T10:43:28.960 に答える
2

ごめんなさい、みんな。私は解決策を見つけたので、私は愚かです。私はApache 2を使用し、パスにファイルを持つ仮想ホストを持っています: "/etc/apache2/sites-enabled/ci.tao2tw.com"

私は変わらなければならないAllowOverride None to AllowOverride All

于 2012-08-25T14:26:48.047 に答える
0

ええ、次のようにルーティングする必要があります。

$route['order'] = "order/order"; 

その理由は、URL をモデルのメソッドにルーティングするまで、実行したい機能を認識できないためです。

これで、 Order モジュールの order() メソッドが呼び出されます

于 2012-08-25T10:00:21.447 に答える
0

.htaccess ファイルに問題があると思います。アプリケーションはサブフォルダーにありますか?

RewriteEngine on
RewriteBase /path/to/app  [add this if your application is under a sub folder]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

<IfModule mod_php5.c>
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_php5.c>
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
于 2012-08-25T12:49:22.007 に答える