Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP重定向路由_Cakephp_Url Routing_Cakephp 2.3 - Fatal编程技术网

CakePHP重定向路由

CakePHP重定向路由,cakephp,url-routing,cakephp-2.3,Cakephp,Url Routing,Cakephp 2.3,在我的CakePHP2.3应用程序中,我希望example.com/come/Harry重定向example.com/myworks/people/Harry 这是可行的,但这是有联系的 Router::connect ('/come/:myname', array('controller' => 'myworks', 'action' => 'people'), array( 'pass' => array('myname') ) );

在我的CakePHP2.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/
。重定向时如何将参数传递给操作?

您基本上已经做到了,但是您需要定义命名参数,以便cake知道url是有效的

参考


您已经差不多做到了,但是您需要定义命名参数,以便cake知道url是有效的

参考

根据您希望使用
persist
而不是
pass
进行重定向。此代码应按您的需要工作:

Router::redirect ('/come/*',
    array('controller' => 'myworks', 'action' => 'people',
          '?' => array('processed' => 1)),
    array(
        'persist' => array('myname')
    )
);
原因是您在重定向时正在生成一个新的url:

  • pass用于定义应选择哪些路由参数 转移到pass数组中。添加要传递的参数将删除它 从常规路由数组。例如,“通过”=>数组('slug')
  • 持续是 用于定义应自动包括哪些管线参数 生成新URL时。您可以通过 在url中重新定义它们,或通过将参数设置为 错。例如,“persist”=>数组('lang')
根据您希望使用
persist
而不是
pass
进行重定向。此代码应按您的需要工作:

Router::redirect ('/come/*',
    array('controller' => 'myworks', 'action' => 'people',
          '?' => array('processed' => 1)),
    array(
        'persist' => array('myname')
    )
);
原因是您在重定向时正在生成一个新的url:

  • pass用于定义应选择哪些路由参数 转移到pass数组中。添加要传递的参数将删除它 从常规路由数组。例如,“通过”=>数组('slug')
  • 持续是 用于定义应自动包括哪些管线参数 生成新URL时。您可以通过 在url中重新定义它们,或通过将参数设置为 错。例如,“persist”=>数组('lang')
使用以下代码

Router::redirect ('/come/*',
    array('controller' => 'myworks', 'action' => 'people'),
    array('params' => '[a-zA-Z0-9]+')
);
使用以下代码

Router::redirect ('/come/*',
    array('controller' => 'myworks', 'action' => 'people'),
    array('params' => '[a-zA-Z0-9]+')
);

我为“myname”插入了一个小写单词。但当我尝试“Router::connect”时,它也会重定向到
example.com/myworks/people/
,但“Router::redirect”不起作用。但当我尝试“Router::connect”时,它也会重定向到
example.com/myworks/people/
,但“Router::redirect”不起作用。是否可以将静态查询字符串添加到URL?例如,我想将
?processed=1
添加到最终URL。@trante将其添加到我的答案中。是否可以将静态查询字符串添加到URL中?例如,我想将
?processed=1
添加到最终URL。@trante将其添加到我的答案中。