Как изменить http-код при перенаправлении схемы Symfony - PullRequest
0 голосов
/ 12 ноября 2018

Я перевожу старое приложение в Symfony, и по причине SEO необходимо сохранить его часть по HTTP и часть по HTTPS.

Я использую schemes ключ конфигурации в routing.yaml:

route_name:
    path: ...
    schemes: [HTTP]

Проблема, с которой я столкнулся, заключается в том, что Symfony перенаправляет с HTTPS на HTTP через HTTP 301 Moved Permanently, но я бы хотел, чтобы он перенаправил только временно, потому что мы планируем полностью перейти на https в следующем году.

Есть ли способ изменить код ответа? Или есть лучший способ сохранить часть приложения по HTTP и часть по HTTPS?

1 Ответ

0 голосов
/ 12 ноября 2018

Мне было интересно, поэтому я посмотрел на это. К сожалению, это кажется немного сложнее, чем я ожидал.

Постоянные перенаправления жестко запрограммированы, см .:

https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Routing/RedirectableUrlMatcher.php#L35

Нет проблем, вам просто нужно заменить устройство на ваше ... НО. Сопоставитель не вводится в маршрутизатор, а создается во время прогрева маршрутизатора.

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Router.php#L270

По крайней мере, опции matcher_class, похоже, являются тем, что мы ищем. К сожалению, это также жестко закодировано:

https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml#L66

Похоже, вы создадите пользовательское сопоставление (с постоянным => false) и переопределите конфигурацию маршрутизатора с помощью прохода компилятора.

Необычно сложно, даже по стандартам Symfony.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...