使用cakephp路由器的动态html重定向

时间:2012-09-26 18:26:25

标签: cakephp redirect routes

动态html使用路由器重定向

一开始我没有类别,我的所有页面都是root

示例:

   http://domain/somepage

这很棒,但随着我多年来的内容增长,我需要对内容进行分类

所以我添加了一些路线,见下文 //routes.php

Router::connect(

"/:category/:slug",
array('controller' => 'controllername', 'action' => 'view'),
       array( 

            'name'=>'[-A-Z0-9]+', 

           'pass' => array('category','slug')



          ) 

        );

//端 这很有效,完成了我需要做的事情,但搜索引擎存在一个问题。我需要为所有链接写301,而且我有超过8K的页面。

解决方案cakesphp的Router :: redirect

我现在遇到的问题是我无法弄清楚如何重定向旧链接。我可以将所有链接重定向到一个类别,但不会削减它。我需要将所有链接重定向到新位置。

我正在尝试使用routes.php router :: redirect

如果我这样做,我的代码会重定向到类别,但不会重定向到

   Router::redirect(
'/:slug/*',
  array(
  'pass' => array('category/:slug'))

结果

  http://domain/category/

我怎样才能让蛋糕重定向到

  http://domain/category/slug  ?

  instead of  http://domain/category/

我的所有链接都指向根目录
   http://domain/somepage http://domain/anotherpage http://domain/ect

我需要添加类别

,例如

`
     http://domain.com/phones/samsung.php
     http://domain.com/books/cakephp.php

`

我不想使用.htaccees文件,因为

我的软管限制了我100次重定向

我有超过8K的链接我需要重定向

我正在尝试在routes.php文件中使用cake router :: redirect函数。

以下代码仅适用于一个类别,它不会像我希望的那样动态地执行。 我尝试创建一个路由器类,就像你建议的那样为我做这个,但说实话,我不是cakephp的专家。它易于学习和一个伟大的框架我只是不知道如何制作我自己的类或组件。我还没有找到好的文档来做到这一点。

 //routes.php

  $move='category/'. stripslashes_deep ($_SERVER['REQUEST_URI']);             Router::redirect('/:slug/*',$move, array('status' => 302)); code

1 个答案:

答案 0 :(得分:0)

您最好的选择是使用自定义路线类。

自定义路由扩展了CakeRoute类,允许您返回/添加/修改传递的参数。

CakePHP Custom Route Classes - How to Pass Arguments?