Zend_Controller_Router_Route问题

时间:2010-11-30 16:22:02

标签: php zend-framework mod-rewrite zend-route

我需要修剪我的网址的第一部分

示例/param1/12234/module/controller/action 将成为/module/controller/action/param1/12234

我试过

  

$ router-> addRoute('appid',new   Zend_Controller_Router_Route中( 'APPID /:APPID /:模块/:控制器/:动作/',   array(),array(2 =>“module”,3 =>“controller”,4 =>“action”)));

但不会奏效!

有些帮助?

1 个答案:

答案 0 :(得分:1)

尝试:

<?php

   //-------------------------
   // Get router from front
   // controller
   $router = $this->frontController->getRouter();

   //-------------------------
   // Create route
   $route = new Zend_Controller_Router_Route(
      'controller/action/:appid/:param1',
      array(
         'module' => default',
         'controller' => 'index',
         'action' => 'index',
         'appid' => '',
         'param1' => 'default_value'
      ),

      //-------------------------
      // You can even add a regex
      // to parameters. Example,
      // appid can only be an integer
      array(
         'appid' => '\d+'
      )
   );

   //-------------------------
   // Add route to Router
   $router->addRoute('appid', $route);
?>

当然,你需要替换一些东西(模块,控制器,动作和参数)。如果您没有使用模块,只需将其从阵列中删除即可。

最后,要在视图中使用路线,您可以使用:

$this->url(array('appid' => 1, 'param1' => 'custom_value'),'appid');

UPDATE:

您可以在

中尝试以下操作
<VirtualHost>

   RewriteEngine On
   RewriteRule ^/appid/(.*) /module/controller/action/$1 [R=301,L]
</VirtualHost>

如果您不需要使用永久301重定向,则可以删除R