Php symfony 1.4路由:使用URL参数匹配路由

Php symfony 1.4路由:使用URL参数匹配路由,php,symfony1,routes,symfony-1.4,Php,Symfony1,Routes,Symfony 1.4,我为一些搜索结果页面设置了友好的URL,并为每个页面使用自定义路由: friendly_search_resultpage: url: /products/my-friendly-alias param: module: products action: search querystring: searchattribute querystring2: searchattribute2 这很好,但是当直接进行搜索时(即浏览到/products/searc

我为一些搜索结果页面设置了友好的URL,并为每个页面使用自定义路由:

friendly_search_resultpage:
  url: /products/my-friendly-alias
  param:
    module: products
    action: search
    querystring: searchattribute
    querystring2: searchattribute2
这很好,但是当直接进行搜索时(即浏览到
/products/search?querystring=search…
),我想设置一个包含匹配的友好URL的
。这将有助于谷歌理解两者之间的关系,并确保没有重复的内容


我将我的友好URL路由放在
routes.yml
的顶部,并希望有一个神奇的匹配,但在symfony所做的检查中,URL参数无法识别。我已经挖到了这条路,运气不好。有可能吗?

我最后编写了一个用于这些路由的自定义路由类,该类在调用url_for()时执行。代码如下:

<?php
class mySearchFriendlyRoute extends sfRoute
{
  public function matchesParameters($params, $context = array())
  {
    // I can't find symfony sorting parameters into order, so I do
    // (so that foo=x&bar=y is treated the same as bar=y&foo=x)
    ksort($params);
    $mine = $this->defaults;
    ksort($mine);
    if ($params == $mine) {
      return true;
    }
    return false;
  }
}

尝试使用自己的路线:

friendly_search_resultpage:
  class: YourRouteClassName
...
并通过具体的cannonicialization(返回规范URL)在那里重载sfRoute::generate()

这将在上次sf1.4修订版发布后重定向到我的项目中的301