ルーティング構成の symfony 正規表現パターンに少し問題があります。
/keyword
と/keyword/
URLの両方を一致させたいと考えています。/
キャラクターは任意です。
ここに私のパターンがあります:
pattern: /{keyword}/?
/keyword/
パターンに一致しますが、一致し/keyword
ません。
パターンはどのように書けばよいですか?
末尾のスラッシュを追加する場合、それはオプションです。ユーザーは、スラッシュのないパスからスラッシュのあるパスにリダイレクトされます。したがって、/{keyword}/
パターンは と の両方/{keyword}
で機能し/{keyword}/
ます。
ただし、末尾のスラッシュなしで定義すると — /{keyword}
—/{keyword}
のみで機能します。
関数が使用されているコントローラーで、注釈を使用します。
/**
* Function
*
*
* @Route("your/route/{keyword}")
* @Route("your/route/{keyword}/")
*/
そして、両方のルートでこの機能にアクセスできます。
ルートに正規表現パターンを含めることはできないと思います。特定のkeyword
正規表現パターンが必要になる場合がありますが、それは別の問題です。
YML を使用している場合、最善の方法は 2 つの異なるルートを用意することだと思います。
route1:
pattern: /{keyword}
...
route2:
pattern: /{keyword}/
...
注釈を使用している場合は、両方をコントローラー アクションの上部に配置できます。
/**
* @Route("/{keyword}");
* @Route("/{keyword}/");
*/