2

だから私はページを持っています:

http://www.mysite.com/controller/function

この関数は、コントローラーで次のように定義されています。

function ()
{
//some stuff here
}

ただし、URLを解決することは可能です: http ://www.mysite.com/controller/function/blablabla

つまり、「blablabla」を関数に渡して追加のURIセグメントを形成できますが、それでも同じページが表示されます。多くのコントローラー/関数で同じ問題があります-パラメーターが関数に渡される(またはURIセグメントとして表示される)のを防ぐにはどうすればよいですか?

私はCodeigniterとPHPを非常にパートタイムで約6か月間使用しているので、答えが明らかな場合は許してください。ただし、私の検索はこれで実を結びませんでした。

私の目標は最適化されたSEOです-余分なURIセグメントを持つページを正しいページにリダイレクトするのが良いのか404ページにリダイレクトするのが良いのかわからない。

4

2 に答える 2

2

CIがURI解析を処理する方法を変更せずに、これを防ぐことはできません。

次のようにリダイレクトを強制できます。

function my_happy_function($redirect=null) {
   if($redirect) {
   redirect('/controller/my_happy_function/');
   }
}

これにより、ページリダイレクトを犠牲にして、URIで指定された変数がすべて削除されます。

于 2012-10-18T21:36:42.847 に答える
0

ページのすべてを一般的にキャッチしたいようです。ルートを使用してこれを行うことができます。

例えば:

$route['my_happy_function(/:any)*'] = "my_happy_function";

次に、my_happy_functionインデックスメソッドで、そこでURIセグメントをチェックします...

public function index()
{
    $something = $this->uri->segment(1);
    $something_else = $this->uri->segment(2);
    // etc

}

このようにして、my_happy_functionへのすべての呼び出しがインデックスメソッドにプッシュされます...

待って、私はあなたの質問を正しく理解しましたか?ポイントを逃した場合はお知らせください。更新できます。

于 2012-10-18T21:40:26.903 に答える