2011-08-21 45 views
4

我已经在Cakephp中重写了我的网站,并选择保留新的CakePHP结构。我想知道我是否可以在Cakephp中使用301路由(永久移动)。在CakePHP中301重定向页面的最佳方式是什么?

我想将resources.php,languages.php,clips.php,可能* .php重定向到/ resources /,/ languages /,/ clips。

这种类型的301重定向可以轻松地在CakePHP中完成吗?我甚至可以写一个简单的管理界面来添加301链接,例如从MySQL表中轻松管理重定向。或者更好的做手动通过mod_rewrite?

回答

8

我不知道的最好的方式,但我会先放的路线路由PHP这样的:

Router::connect('/resources.php', array(
    'controller' => 'resources', 
    'action' => 'index' 
    ) 
); 

(等)

,办理入住手续的动作功能开始后该航线使用,如果使用* .PHP路线做301重定向:

$this->redirect(array('controller' => 'resources', 'action' => 'index'), 301); 

我想也有“聪明”的方式来实现这一点,但,这是这个想法。 (使用before_filter等)

1

由于CakePhp 2.x有Router::redirect()方法。

所以,你可以在你的击溃加入重定向:因为301重定向默认使用

Router::redirect(
    '/resources.php', 
    array(
     'controller' => 'resources', 
     'action' => 'index' 
    ), 
    array('status' => 301) 
); 

第三个参数array('status'=>301)是没有必要的。

请参阅Redirect routing — CakePHP Cookbook v2.x documentation

+0

如果是重定向,为什么会提供控制器和操作?谢谢! – Gediminas

+1

@Lucas,第二个参数是目标网页的网址。你有两个选项来指定它:或者是像''/ landing /''这样的字符串url,或者一个指定控制器的数组,或者array('controller'=>'landing','action'= >'index')'让'Router'为你准备网址。 –

相关问题