路由URL以特殊字符开头

时间:2011-04-10 14:45:54

标签: php zend-framework url url-routing

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

例如,请参阅以下两个网址路线:

mysite.com/~user

mysite.com/admin

我该怎么做?

2 个答案:

答案 0 :(得分:1)

在你的Bootstrap中试试并使用它

// 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的控制器来响应路由此路由器的请求。

答案 1 :(得分:-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]; 
}