переадресация symfony с одного домена на другой - PullRequest
0 голосов
/ 23 мая 2019

У меня есть сайт Symfony 4.2, который обслуживает контент на двух поддоменах:

a.example.com

b.example.com

Как перенаправить запросы, сделанные для /resetting/reset/ на a до b, сохраняя при этом строку запроса?

Я пробовал нижеприведенное, но он ничего не делает - т.е. когда я нажимаю a.example.com/resetting/reset, он просто остается там.Без ошибок.

resetting:
    host: ^%a_domain%$
    path: ^/resetting/reset/
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
    defaults:
        path: '%b_domain%/resetting/reset/'
        permanent: true
        keepQueryParams: true

Любые идеи будут оценены!

1 Ответ

0 голосов
/ 30 мая 2019

Я не смог заставить работать подход yaml, поэтому вместо этого я переписал маршрут с помощью специального действия перенаправления следующим образом:

/**
 * @Route("/resetting/reset/{token}",
 *     name="fos_user_resetting_reset_override",
 *     host="{domain}",
 *     defaults={"domain"="%a_domain%"},
 *     requirements={"domain"="(%a_domain%)"},
 * )
 */
public function redirectResettingRouteToBDomain(string $token): RedirectResponse
{
    // generate the current url with an absolute path
    $path = $this->generateUrl(
        'fos_user_resetting_reset',
        ['token' => $token],
        UrlGeneratorInterface::ABSOLUTE_PATH
    );

    // replace A_DOMAIN with B_DOMAIN in the path
    $domain = preg_replace(
        '/' . preg_quote(getenv('A_DOMAIN'), '/') . '/',
        getenv('B_DOMAIN'),
        $this->getRequest()->server->get('HTTP_HOST')
    );

    // ensure the redirect works on http and https
    $url = '//' . $domain . $path;

    return $this->redirect($url);
}

Обратите внимание, что я настроил переменные env для A_DOMAIN и B_DOMAIN, а затем сделал их доступными как параметры a_domain и b_domain.

По существу, действие контроллера выше запускается только на A_DOMAIN, переопределяя маршрут по умолчанию fos_user_resetting_reset для B_DOMAIN, а затем перенаправляет запрос.

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