我正在关注CakePHP博客教程,目前正在关注网址
/posts/view/1
作品。使用路由,我设法创建别名新闻:
Router::connect('/news/:action/*', array('controller' => 'posts'));
Router::connect('/news/*', array('controller' => 'posts'));
这样就是网址
/news/view/1
也适用。但是,/ posts / URL仍然有效。如何使用/ posts /仍然有效阻止URL?
答案 0 :(得分:1)
Anubhavs的答案在技术上是正确的,但假设这个尚未在框架中实现是错误的。事实上,重定向路由是核心的一部分:
请参阅http://api.cakephp.org/2.4/class-Router.html#_redirect
在路由器中连接新的重定向路由。
重定向路由与正常路由不同,因为它们执行的是 如果找到匹配项,则为实际标头重定向。重定向可以 在您的应用程序中发生或重定向到外部位置。
示例:
Router::redirect('/home/*', array('controller' => 'posts', 'action' => 'view'), array('persist' => true));
将/ home / *重定向到/ posts / view并将参数传递给 /文章/图。使用数组作为重定向目标允许您 使用其他路由来定义URL字符串应重定向到的位置。
Router::redirect('/posts/*', 'http://google.com', array('status' => 302));
重定向/发布/ *到http://google.com,HTTP状态为302
答案 1 :(得分:0)
您可以重定向/发布到主页,例如:
Router::connect('/posts', array('controller' => 'pages', 'action' => 'display', 'home'));
如果您想使用此术语,您可以重命名PostsController并将其命名为NewsController。
答案 2 :(得分:0)
你的问题的答案有点棘手,在cakephp文档中没有任何内容
我在类似情况下所做的工作如下:
步骤1:我已将routes.php中的一个路由规则定义为
Router::connect('/posts/*',
array('controller' => 'posts',
'action' => 'handleRedirection')
);
第2步:我在posts controller
中创建了一个函数handleRedirection function handleRedirection(){
$url = str_replace('posts','news',$this->request->url)
$this->redirect($url,'301');
}
在上面的例子中看到我使用301永久重定向,所以你可以做这样的事情。