【问题标题】:Zend_Controller_Router_Route issueZend_Controller_Router_Route 问题
【发布时间】:2025-12-20 04:55:11
【问题描述】:

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

例如/param1/12234/module/controller/action 会变成/module/controller/action/param1/12234

我试过了

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

但不会工作!

有帮助吗?

【问题讨论】:

  • 嗨,只是跟进看看我在更新中提供的 RewriteRule 是否有帮助。最佳

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


【解决方案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');

更新:

您可以在您的

中尝试以下操作
<VirtualHost>

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

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

【讨论】:

  • 基本是我需要使用这个 url example.com/appid/1234567 作为我的基本 url(facebook 相关问题)并附加模块/控制器/动作和参数。我需要在默认路由之前切断 appid/1234567 部分。将接受 mod_rewrite 解决方案:D
  • 感谢安东内洛提供的额外信息。我添加了一个更新。请让我知道这是否有帮助。最佳
  • 注意:您仍然需要设置良好的路线,以使您的应用程序按预期工作。最佳
  • tkz 的建议。我会尝试 RewriteRule ^/appid/(.*)/(.*)/(.*)/(.*)/(.*) /$2/$3/$4/appid/$1/$5{%QUERYSTRING} [ R=301,L]