在CakePHP中301重定向页面的最佳方法是什么?

时间:2011-08-21 11:19:17

标签: cakephp routing

我在Cakephp中重写了我的网站,并选择保留新的Cakephp结构。我想知道我是否可以在Cakephp中使用路由进行301路由(永久移动)。

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

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

2 个答案:

答案 0 :(得分:9)

我不确定最好的方法,但我会首先在路线上放置路由,如:

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

(依此类推)

在动作函数开始后检查使用了哪条路径,如果使用* .php路由,请执行301重定向:

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

我想还有“更聪明”的方法来实现这个,但这就是这个想法。 (使用before_filter等)

答案 1 :(得分:2)

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

所以你可以在你的溃败中添加重定向:

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

第三个参数array('status'=>301)不是必需的,因为默认使用301重定向。

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