CodeIgniterdomain/controller_name/method-name/method_parametersここで最初のURLとしてURLを読み取り、http://myapp/locations/1最初の部分(myapp)はドメイン名、2番目の部分(locations)はコントローラー名、3番目の部分はコントローラーのメソッド名である必要があります1。そのようなメソッド名なので、エラーが表示されます。
domain/controller_nameこのURLで行ったように渡すと、CodeIgniterは最初の部分をと2番目http://myapp/locationsの部分として読み取り、URLに3番目の部分がない場合、CodeIgniterはデフォルトでメソッド/関数を呼び出すため、2番目のURLは機能します。domain_namecontroller_nameindex
あなたが持っているあなたの最後のURLhttp://myapp/locations/main/locations/1でそれはとして読まれました
myapp-ドメイン名
locations-コントローラー名
main-メソッド/関数名
そして残りはすべてmainコントローラーの引数として渡されます。したがって、URLの3番目の部分はmethod/function名前であり、3番目の部分が指定されていない場合は、デフォルトでメソッドをCodeIgniter呼び出しindexます。その場合、そのコントローラーでデフォルトのindexメソッド/関数を宣言する必要があります。そうしないと、エラーが発生します。