Php symfony 1.4路由:使用URL参数匹配路由
我为一些搜索结果页面设置了友好的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
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