1

私の CakePHP 2.3 アプリケーションでは、example.com/come/Harryリダイレクトしたいと思いexample.com/myworks/people/Harryます。

これは機能しますが、これは接続します。

Router::connect ('/come/:myname',
    array('controller' => 'myworks', 'action' => 'people'),
    array(
        'pass' => array('myname')
    )
);

301 リダイレクトが必要です。私はこれを試しました:

Router::redirect ('/come/:myname',
    array('controller' => 'myworks', 'action' => 'people'),
    array(
        'pass' => array('myname')
    )
);

しかし、それはにリダイレクトされましたexample.com/myworks/people/。リダイレクト中にアクションに引数を渡すにはどうすればよいですか?

4

3 に答える 3

4

リダイレクトではなく、使用するドキュメントに従ってください。このコードは、必要に応じて機能するはずです。persistpass

Router::redirect ('/come/*',
    array('controller' => 'myworks', 'action' => 'people',
          '?' => array('processed' => 1)),
    array(
        'persist' => array('myname')
    )
);

その理由は、リダイレクト時に新しい URL を生成しているためです。

  • passは、どのルーティング パラメータをパス配列にシフトするかを定義するために使用されます。渡すパラメータを追加すると、通常のルート配列から削除されます。元。'pass' => 配列('slug')
  • persistは、新しい URL を生成するときにどのルート パラメーターを自動的に含めるかを定義するために使用されます。url で永続パラメーターを再定義することによって永続パラメーターをオーバーライドするか、パラメーターを false に設定することによって永続パラメーターを削除することができます。元。'persist' => array('lang')
于 2013-08-26T04:09:22.567 に答える
0

次のコードを使用

Router::redirect ('/come/*',
    array('controller' => 'myworks', 'action' => 'people'),
    array('params' => '[a-zA-Z0-9]+')
);
于 2013-08-26T06:07:41.173 に答える