2011-06-29 19 views
4

これは、何が起こっているか、私が正しくやっていないことを十分に理解していないので、私はこの質問をすることができます。Codeigniter URLパス

URLに問題があります。

http://localhost/index.php/userhttp://localhost/ と同じですが、 http://localhost/index.php/user/somethingは、私がhttp://localhost/something作品を作るにはどうすればよいhttp://localhost/something

と同じではありませんか?

http://localhost/user/somethingである必要がありますが、どうすれば作れますか?

+0

申し訳ありませんが、私はCIで始まっています。私はどこでも私の答えを見つけることができません。 –

答えて

2

CodeIgniterのURLの仕組みを理解する必要があります。

  • URLはいくつかのセグメントで構成されています。 http://localhost/index.php/user/something/thingこの例では、usersomethingおよびthingはURLのセグメントです。

  • URLのセグメントは、どのコントローラとそのコントローラのどのメソッドを実行するかを示します。 http://localhost/index.php/user/something/thingこの例では、userコントローラからsomethingというメソッドが呼び出され、そのメソッドにthingがパラメータとして渡されます。

  • URLの最初のセグメントはコントローラを示します。

  • URLの2番目のセグメントは、そのコントローラのメソッドを示します。

  • 以下のセグメントがパラメータとしてそのメソッドに送信されます。

しかし、いくつかのデフォルト値があります。

  • あなたのURLがhttp://localhost/index.php/somethingある場合は、somethingコントローラとして指定されているが、あなたは任意の方法を指定していないので、indexデフォルトのメソッドが呼び出されます。したがって、上記のURLはhttp://localhost/index.php/something/indexと同じです。

  • URLがhttp://localhost/index.php/の場合、指定されたセグメントはありません(コントローラもメソッドもありません)。したがって、application\config\routes.phpで指定されているデフォルトコントローラは、ロードされたコントローラです。そのコントローラのどのメソッドが呼び出されますか?もちろん、indexメソッド。

    - をapplication\config\routes.phpのファイルであなたのアプリケーションに適合するものに変更することで、デフォルトコントローラを設定できます。

  • http://localhost/user/somethinghttp://localhost/index.php/user/somethingと同じにするには、アプリケーションのカスタムルートを作成する必要があります。その詳細な情報はhereです。

1

http://localhost/somethingあなたは

http://localhost/user/somethingあなたはユーザーコントローラクラスで何かメソッドを呼び出していることを示して何かコントローラクラスのindexメソッドを呼び出していることを示しています。

それは意味がありますか?

1

http://localhost/somethingを動作させるには、indexメソッドのコントローラsomethingが必要です。これはhttp://localhost/something/indexにアクセスするのと同じです。

また、http://localhost/user/somethingは、somethingというメソッドを持つuserコントローラがあることを意味します。

それはまったく役に立ちますか?あなたはmod_rewriteのメソッドを使用する必要があなたのURLからindex.phpをを削除するには

0

は、URLからコントローラ名(ユーザー)を削除するには次にhere

を説明し、あなたはあなたのケースではroutes

を使用する必要がありますあなたのroutes.phpファイルに$route['^(something|something_else|etc)(/:any)?$'] = "user/$0";を追加する

+0

@Andrei私はちょうどCIで始まりました(そしてそれを愛しています)、これが私のために働いていました。私はまた、stackoverflowに新しいですので、あなたの質問にコメントすることはできません:Sは私はここでそれをやっている – steve

+0

私は本当にしたいと思いますindex.phpを削除することでした。いくつかのCIトリック機能のように、mod_rewriteではなく簡単な方法がありますか? –

+0

見た目ほど複雑ではありません。実際には、mod_rewrite how-toのステップ1と2を実行するだけでした。私はコードが少ない.htaccessメソッドを見たことがありますが、このバージョンにはいくつかの特別な機能があります。さらに、単純なコピー/ペーストを行い、ベースフォルダ名を変更します。 – steve