禁止路由的网址

时间:2013-03-01 23:04:54

标签: php model-view-controller routing

我正在开发一个包含URL路由器的个人MVC框架。

目前我有一个PagesController和一个'sitemap'视图。所以我可以去url.com/pages/sitemap /

我还为“/ info / {page} /”设置了URL路由。我已经为静态页面做了这个,我想在他们的URL中有'info'。这也适用于站点地图。

然后,按照预期,我也已将/ sitemap /映射到站点地图页面。

我只希望/ sitemap /成为有效资源,禁用/重定向其他网址的最佳方法是什么

1 个答案:

答案 0 :(得分:0)

这一切都取决于您的路由器的实施。如果您在控制器中有权访问原始URL,则需要对其进行比较并根据需要发出重定向:

class PagesController {

    function sitemap($request) {
        if ($request->url == '/info/sitemap/')
            $this->response->redirect('/sitemap/');

        //regular processing here
    }
}

修改

另一个选项,如果您的规则是基于正则表达式的,则添加“排除”模式,这会使/info/sitemap//info/{page}/模式不匹配。

有些事情:

$router->add(array(
    'url' => '/info/(?<action>.*)/',
    'controller' => 'PagesController',
    'exclude' => '(?:sitemap)',
));