0

それぞれのカスタム ルートを使用して、いくつかの検索結果ページにわかりやすい URL を設定しました。

friendly_search_resultpage:
  url: /products/my-friendly-alias
  param:
    module: products
    action: search
    querystring: searchattribute
    querystring2: searchattribute2

これは問題なく動作しますが、直接検索を行う場合 (つまり、を参照する場合) に、一致するわかりやすい URL を含む/products/search?querystring=search...を設定したいと考えています。<link rel="canonical">これにより、Google は関係を理解し​​、コンテンツが重複していないことを確認できます。

分かりやすい URL ルートを先頭に配置routes.ymlし、魔法の一致を期待しましたが、symfony によるチェックで URL パラメーターが認識されません。私は sfRoute を掘り下げましたが、運がありませんでした。出来ますか?

4

2 に答える 2

0

独自のルートを使用してみてください。

friendly_search_resultpage:
  class: YourRouteClassName
...

そして、具体的な正規化によってsfRoute :: generate()をオーバーロードします(正規URLを返します)。

これは、最後のsf1.4リビジョンのプロジェクトで301にリダイレクトされます。

于 2013-01-11T16:17:26.303 に答える
0

最終的に、これらのルートに使用するカスタム ルーティング クラスを作成しました。これは、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;
  }
}

class: mySearchFriendlyRoute使用するには、routes.yml エントリに追加します。

于 2013-01-11T14:54:52.567 に答える