0

CodeIgniter サイトのカスタム ルートを作成しようとしています。最も基本的なルートでさえ機能しません。たとえば、「テスト」にマップされたウェルカムコントローラーがあり、404だけです。mod_rewrite を有効にして MAMP を実行しています。

config.php の index.php 行が空です。

$config['index_page'] = '';

これが私の.htacessファイルです..

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] 

そして、ここに私のルートがあります..

$route['welcome'] = 'test';
4

3 に答える 3

0

いくつかのこと:

  1. CI のルートはカスケードされ、上から下に評価され、ルーターは最初の一致で停止します。次に、バニラ ディストリビューションの 2 つのデフォルト ルートのに任意のカスタム ルートを配置するようにします。

    $route['default_controller'] = "welcome";
    $route['404_override'] = '';
    // custom routes here
    $route['welcome'] = "welcome/test";
    
  2. "welcome" (デフォルト) という名前のコントローラーがあり、"test" という名前のメソッドを呼び出したい場合は、次のようなルートが必要です。

    $route['welcome'] = "welcome/test"
    

    URL http://wwww.yourdomain.com/welcomeでアクセスできます (ルートが指定されていない場合は、http://www.yourdomain.com/welcome/testのようにアクセスします)

通常、コントローラーには、他のメソッドが提供されていない場合に自動的に呼び出される index メソッドがあります。これまでに作成したルートはindex()、おそらく存在しない「テスト」コントローラーのメソッドを呼び出しているため、機能していません。

提案: "welcome" コントローラーをデフォルトとして維持し、 http://www.yourdomain.com/testのような URL を呼び出したい 場合は、メソッドが必要でtest()あり、ルートが

$route['test'] = "welcome/test";
于 2013-06-24T21:38:40.467 に答える
0

これを正しく読んだ場合、そのルートはコントローラーの「ようこそ」をコントローラーの「テスト」にリダイレクトしようとします。「test」という名前のコントローラーと「index」という名前の関数がある場合、次をルーティングできます。

route['welcome/index'] = 'test/index';

それはあなたがやろうとしていることですか?

于 2013-06-24T21:28:33.947 に答える
0

ルートでは、配列キーには一致するURIが含まれ、配列には再ルーティング先の宛先が含まれます。

-- CI ドキュメント

物理コントローラー名はwelcomeです。testしたがって、最初のセグメントにその単語を含む URL をwelcomeクラスに再マッピングする場合は、次のようにする必要があります。

$route['test'] = "welcome/METHOD";

クラスMETHODのメソッドはどこにありますか。welcome

注:クラス/メソッドがwelcome/indexの場合、追加する必要はありません/index

于 2013-06-24T21:47:10.700 に答える