我正在开发一个包含URL路由器的个人MVC框架。
目前我有一个PagesController和一个'sitemap'视图。所以我可以去url.com/pages/sitemap /
我还为“/ info / {page} /”设置了URL路由。我已经为静态页面做了这个,我想在他们的URL中有'info'。这也适用于站点地图。
然后,按照预期,我也已将/ sitemap /映射到站点地图页面。
我只希望/ sitemap /成为有效资源,禁用/重定向其他网址的最佳方法是什么
答案 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)',
));