public function generateMetaTagKeyFromRelativePath($pathInfo, RouterInterface $router, $locale)
 {
     try {
         $info = $router->match($pathInfo);
     } catch (ResourceNotFoundException $e) {
         $info = false;
     } catch (MethodNotAllowedException $e) {
         $info = false;
     }
     if ($info !== false && strpos($info['_route'], RouteLoader::ROUTE_BEGIN) === 0) {
         // allready alias, get the base pathinfo
         $oldInfo = RouteLoader::getPathinfo($info['_route']);
         $oldRoute = $oldInfo['_route'];
         unset($oldInfo['_route']);
         $oldInfo[UrlGenerator::GENERATE_NORMAL_ROUTE] = true;
         $pathInfo = $router->generate($oldRoute, $oldInfo);
         $pathInfo = str_replace('/app_dev.php', '', $pathInfo);
         $pathInfo = preg_replace('!([^?]*)(\\?_locale=[^&]*)!', '$1', $pathInfo);
     }
     return $this->generateMetaTagKeyFromPathInfo($pathInfo, $locale);
 }
 public function canonical($pathinfo, $uri = null)
 {
     if ($uri) {
         if (!$this->keyGenerator->isAddQueryString()) {
             //remove query string
             if ($pos = strpos($uri, '?')) {
                 $uri = substr($uri, 0, $pos);
             }
         }
         //remove if rewrite not used
         $uri = str_replace('app_dev.php/', '', $uri);
         $uri = str_replace('app.php/', '', $uri);
         return $uri;
     }
     try {
         $infos = $this->router->match($pathinfo);
     } catch (ResourceNotFoundException $e) {
         $infos = false;
     } catch (MethodNotAllowedException $e) {
         $infos = false;
     }
     if ($infos === false) {
         return;
     }
     if (strpos($infos['_route'], RouteLoader::ROUTE_BEGIN) === 0) {
         $infos = RouteLoader::getPathinfo($infos['_route']);
     }
     $route = $infos['_route'];
     unset($infos['_route']);
     unset($infos['_controller']);
     return $this->router->generate($route, $infos, true);
 }