【问题标题】:cakephp router redirect using route elementscakephp路由器使用路由元素重定向
【发布时间】:2013-09-17 02:03:33
【问题描述】:

我更改了站点中的链接结构,添加了一个新的路由元素,我想重定向旧链接,为新的路由元素添加一个默认值。

即以前的网址是这样的:mysite.com/category/product-name/

然后我变成了这样:mysite.com/store-section/category/product-name/

我希望旧链接重定向到新链接,为它们添加默认的 store-section 元素。我认为我无法使用 mod_rewrite 实现这一点,因为类别是使用自定义 routeClass 从数据库中解析出来的。

是否可以使用Router::redirect() 中的路由元素来实现这一点?

【问题讨论】:

    标签: cakephp redirect mod-rewrite url-routing


    【解决方案1】:

    由于我还没有找到使用 Router::redirect() 的方法,所以我保留了我的原始路由:

    Router::connect("/:category/:product-name/*", 
        array(
            'controller' => 'products', 'action' => 'view'
        ), 
        array(
            'routeClass' => 'CategoryRouteClass', 
            'pass' => array('category', 'product-name')
        )
    );
    

    并添加新路由以匹配新 URL,指向相同的方法和相同的控制器,但添加新的路由元素并将其作为方法参数传递:

    Router::connect("/:store-section/:category/:product-name/*", 
        array(
            'controller' => 'products', 'action' => 'view'
        ), 
        array(
            'routeClass' => 'CategoryRouteClass', 
            'pass' => array('category', 'product-name', 'store-section')
        )
    );
    

    ...然后在产品控制器的视图方法中,我检查是否设置了 store-section 参数, 如果不是,我会发出重定向,将默认存储部分添加到当前 URL,如下所示:

    Class ProductsController extends AppController {
        public function view($category= null, $product-name = null, 
            $store-section = null) {
    
            if (empty($store-section)) {
                $this->redirect(array(
                    'controller' => 'products', 'action' => 'view', 
                    'category' => $category,
                    'product-name' => $product-name, 
                    'store-section' => 'default-section'), '301');
            }
    
            //.................
        }
    }
    

    这成功地将旧产品 url 发送到新产品的 301,这对于 SEO 和保持旧的入站链接在 Cakephp 中正常工作很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 2011-04-17
      • 2012-09-18
      • 2019-07-16
      • 1970-01-01
      • 2012-04-12
      • 2020-04-22
      相关资源
      最近更新 更多