How to Force HTTPS or HTTP for different URLs

Tip

ヒント

The best policy is to force https on all URLs, which can be done via your web server configuration or access_control.

最良のポリシーは、すべての URL で https を強制することです。これは、Web サーバーの構成または access_control を介して実行できます。

You can force areas of your site to use the HTTPS protocol in the security config. This is done through the access_control rules using the requires_channel option. To enforce HTTPS on all URLs, add the requires_channel config to every access control:

securityconfig で、サイトの一部に HTTPS プロトコルを使用させることができます。これは、requires_channel オプションを使用した access_control ルールによって行われます。すべての URL に HTTPS を強制するには、requires_channel 構成を everyaccess コントロールに追加します。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
# config/packages/security.yaml
security:
    # ...

    access_control:
        - { path: '^/secure', roles: ROLE_ADMIN, requires_channel: https }
        - { path: '^/login', roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        # catch all other URLs
        - { path: '^/', roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

To make life easier while developing, you can also use an environment variable, like requires_channel: '%env(SECURE_SCHEME)%'. In your .env file, set SECURE_SCHEME to http by default, but override it to https on production.

開発中の作業を楽にするために、requires_channel: '%env(SECURE_SCHEME)%' のような環境変数を使用することもできます。 .env ファイルで、SECURE_SCHEME をデフォルトで http に設定しますが、本番環境では https にオーバーライドします。

See How Does the Security access_control Work? for more details about access_control in general.

セキュリティ access_control の仕組みを参照してください。一般的な access_control の詳細については。

Note

ノート

An alternative way to enforce HTTP or HTTPS is to use the scheme option of a route or group of routes.

HTTP または HTTPS を強制する別の方法は、ルートまたはルート グループのスキーム オプションを使用することです。

Note

ノート

Forcing HTTPS while using a reverse proxy or load balancer requires a proper configuration to avoid infinite redirect loops; see How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy for more details.

リバース プロキシまたはロード バランサーの使用中に HTTPS を強制するには、無限のリダイレクト ループを回避するための適切な構成が必要です。詳細については、Symfony をロード バランサーまたはリバース プロキシの背後で動作するように構成する方法を参照してください。