2011-04-10 111 views
4

在ZendFramework中,我想将路由起始地址为~的网址路由到特殊控制器和操作,以便其他网址不会以~正常工作。路由URL以特殊字符开头

例如看空两条网址路线:

mysite.com/~user 

mysite.com/admin 

我怎样才能做到这一点?

回答

1

尝试和你的引导

// Get the instance of the router 
$router = Zend_Controller_Front::getInstance()->getRouter(); 

// Set up a new regex router to match routes starting with ~ 
$route = new Zend_Controller_Router_Route_Regex(
    '(^\~)', 
    //This route should use a 'special' controller 
    array(
     'controller' => 'special', 
     'action'  => 'index' 
    ) 
); 

// Add the new route to the router 
$router->addRoute('archive', $route); 
内使用

您将需要一个名为Special的控制器来响应路由到此路由器的请求。

+0

我试了一下,错误信息是'Invalid controller specified(〜user)'。 – 2011-04-15 16:45:39

+0

你会得到什么网址? – 2011-04-15 16:48:21

+0

我试试这个:'http:// localhost:8080 /〜user'。 – 2011-04-16 14:15:55

-1

不确定zend的具体情况,但他们最好的方法是在url路由器开展业务之前添加一个哈希查找表。

因此,可以说mod_rewrite的转换这样的: mysite.com/~user

这样: mysite.com/index.php?path=~user

,那么你会做这样的事情:

$path = $_GET['path']; 

$url_mod = array(
    '~user'=>'my_other_controller', 
    'admin'=>'my_other_controller', 
); 

if(isset($url_mod[$path)) { 
$path = $url_mod[$path]; 
} 
+0

注意问题,我需要一个路由'URL'或任何我可以在ZendFramework中使用的方法。 – 2011-04-10 16:13:26

相关问题