我在Cakephp中重写了我的网站,并选择保留新的Cakephp结构。我想知道我是否可以在Cakephp中使用路由进行301路由(永久移动)。
我想将resources.php,languages.php,clips.php,可能是* .php重定向到/ resources /,/ languages /,/ clips。
这种301重定向可以在CakePHP中轻松完成吗?我甚至可以编写一个简单的管理界面来添加301链接,例如从MySQL表中轻松管理重定向。或者通过mod_rewrite手动执行此操作会更好吗?
答案 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重定向。