Як форсувати HTTPS або HTTP для різних URL

Дата оновлення перекладу 2022-11-26

Як форсувати HTTPS або HTTP для різних URL

Tip

Найкраща політика - форсувати https у всіх URL, що можна зробити через вашу конфігурацію веб-сервера або access_control.

Ви можете змусити частини вашого сайту використовувати протокол HTTPS у конфігурації безпеки. Це робиться через правила access_control з використанням опції requires_channel. Щоб форсувати HTTPS в усіх URL, додайте конфігурацію requires_channel до кожного контролю доступу:

  • YAML
  • XML
  • 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 }
        # спіймати всі інші URL
        - { path: '^/', roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

Щоб полегшити життя під час розробки, ви можете також викоистати змінну середовища, типу requires_channel: '%env(SECURE_SCHEME)%'. У вашому файлі .env, встановіть SECURE_SCHEME як http за замовчуванням, але перевизначіть його як https у виробництві.

Див. Як працює безпека access_control?, щоб побачити більше деталей про access_control в цілому.

Note

Альтернативний шлях форсування HTTP або HTTPS - це використання опції схеми маршруту або групи маршрутів.

Note

Форсування HTTPS з використанням зворотного проксі або балансувальника навантаження вимагає пправильної конфігурації, щоб уникнути нескінченних петель; див. Як сконфігурувати Symfony, щоб вона працювала за розподільником навантаження або зворотним проксі, щоб дізнатися більше.