2012-03-02 18 views
2

私はcodeigniterを新しくインストールしました。私は単にこのように私のデフォルトのコントローラで機能を使用しようとしています:Codeigniterのデフォルトコントローラで機能しないのはなぜですか?

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

class Welcome extends CI_Controller { 

    public function index() 
    { 

     $data = array(
      'title' => 'Welcome', 
      'description' => 'Welcome Page' 
     ); 

     $this->load->view('layouts/header',$data); 
     $this->load->view('home/home'); 
     $this->load->view('layouts/footer',$data); 
    } 

    public function contact() 
    { 

     $data = array(
      'title' => 'Contact Us', 
      'description' => 'Contact Page' 
     ); 

     $this->load->view('layouts/header',$data); 
     $this->load->view('home/contact'); 
     $this->load->view('layouts/footer',$data); 
    } 
} 

私が正常にhtaccessファイルを使用してindex.phpを削除しました。今私はexample.com/welcome/contactに行くと動作しますが、example.com/contact/は動作しません。

なぜ、これはルートを使用せずにデフォルトで動作しないのですか?

答えて

4

「デフォルトコントローラ」は、URLセグメントがない場合にのみ使用されます。 1つのメソッドしか呼び出さず、コントローラのデフォルトメソッドはindex()です。一般

、コントローラへのあなたのURLマップの最初の部分:これはhelloを呼び出します

http://example.com/contact

これはcontactコントローラのindexメソッドを呼び出しますcontactコントローラのメソッド:

http://example.com/contact/hello

これはcontactコントローラのhelloメソッドを呼び出して、最初の引数としてworldを渡す:ユーザーガイドのすべてのそれについての記事を読む

http://example.com/contact/hello/world

http://codeigniter.com/user_guide/general/urls.html

このURLにはcontactコントローラが必要です。また、routingを使用することもできます。

0

example.com/contact/はContact Controllerを呼び出し、ウェルカムコントローラ(@Madmartiganの説明のようなデフォルトコントローラー)のメソッドです。

CodeIgniterの内部
5

利用ルート、あなたがそれらの各

$route['contact'] = 'welcome/contact'; 

のための新しいURIをrerwriteことができ、

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

のhtaccessファイルについてを忘れないように
関連する問題