Как форсировать HTTPS или HTTP для разных URL

Как форсировать HTTPS или HTTP для разных URL

Вы можете заставить части вашего сайта использовать HTTPS-протокол в конфигурации безопасности. Это делается через правила access_control, используя опцию requires_channel. Например, если вы хотите заставить все URL, начинающиеся с /secure, использовать HTTPS, то вы можете использовать следующую конфигурацию:

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
# config/packages/security.yaml
security:
    # ...

    access_control:
        - { path: ^/secure, roles: ROLE_ADMIN, requires_channel: https }

Сама форма входа в систему должна позволять анонимный доступ, иначе пользователи не смогут аутентифицироваться. Чтобы заставить её использовать HTTPS, вы всё ещё можете использовать правила access_control, используя роль IS_AUTHENTICATED_ANONYMOUSLY:

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
# config/packages/security.yaml
security:
    # ...

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

Также возможно указать использование HTTPS в конфигурации маршрутизации, смотрите Как заставить маршруты всегда использовать HTTPS или HTTP, чтобы узнать больше деталей.