0

symfony ルーティングでドメイン名を要求する必要があります。ルートは次のようになります。

domain_example:
url: /routing/example/:domain_name
param: { module: myModule, action: index, sf_format: json }
requirements: { domain_name: '/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}$/' }

私も試しました:

requirements: { domain_name: '[/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}$/]' }

ルートを次のように呼び出すと: mydomain.com/routing/example/otherdomain.com- モジュール/アクションが存在しないという例外が発生します。

4

1 に答える 1

2

要約する

ドットはSymfonyのセグメント区切りとして使用されます。したがって、このオプションをルートに追加して、Symfony が/セパレータとしてのみ使用するように強制する必要があります。

  options:
    segment_separators: [/]

次に、あなたの正規表現は間違っていますが、SOにはあなたのためのものがあります:

[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?

最終ルート:

domain_example:
  url: /routing/example/:domain_name
  param:
    module: main
    action: index
    sf_format: json
  requirements:
    domain_name: '[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?'
  options:
    segment_separators: [/]
于 2012-10-16T11:57:20.847 に答える