Как форсировать HTTPS или HTTP для разных URL
Дата обновления перевода 2024-07-27
Как форсировать HTTPS или HTTP для разных URL
Tip
Наилучшей политикой является принудительное использование https
для всех URL,
что можно сделать через конфигурацию вашего веб-сервера или access_control
.
Вы можете заставить части вашего сайта использовать HTTPS-протокол в конфигурации
безопасности. Это делается через правила access_control
, используя опцию
requires_channel
. Например, если вы хотите заставить все URL, начинающиеся
с /secure
, использовать HTTPS, то вы можете использовать следующую конфигурацию:
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: PUBLIC_ACCESS, requires_channel: https }
# поймать все другие URL
- { path: '^/', roles: PUBLIC_ACCESS, requires_channel: https }
Чтобы облегчить жизнь во время разработки, вы также можете использовать переменную окружения,
например, requires_channel: '%env(SECURE_SCHEME)%'
. В вашем файле .env
установите
SECURE_SCHEME
в значение http
по умолчанию, но переопределите его на https
в
производстве.
Смотрите Как работает безопасность access_control? для более подробной информации об access_control
.
в целом.
Note
Альтернативным способом принудительного использования HTTP или HTTPS является использование опции схемы маршрута или группы маршрутов.
Note
Форсирование HTTPS при использовании обратного прокси или балансировщика нагрузки требует правильной конфигурации, чтобы избежать бесконечных циклов перенаправления; смотрите Как сконфигурировать Symfony, чтобы она работала за распределителем нагрузки или обратным прокси для более подробной информации.