Здравствуйте, и добро пожаловать на форум.
Поскольку вы пометили свой вопрос перезаписью URL, я предполагаю, что вы хотите добиться перезаписи URL вместо чего-то еще.то есть перезапись URL не «скрывает» эту часть URL, она переписывает URL и удаляет эту часть - это означает, что эта информация не будет доступна вам в вашем проекте Symfony.
Следующий nginxПравило будет переписывать URL-адреса:
rewrite ^/fr/(.*)$ /$1 permanent;
Обратите внимание, что в целом было бы неплохо использовать непостоянный параметр при тестировании / создании таких правил, как это:
rewrite ^/fr/(.*)$ /$1 redirect;
обновлено описание того, как "спрятать" локаль
Это то, что вам нужно сделать в вашем проекте Symfony вместо использования nginx.В качестве предупреждения, однако, документация Symfony явно рекомендует не использовать этот тип сокрытия локали (см. локаль и URL ).Но если вы по какой-то причине по-прежнему хотите скрывать локали такого типа, я бы предположил, что одним из подходов будет создание универсальных маршрутов перехвата для обработки ваших локалей - что-то вроде этого:
locale_redirect:
path: /{_locale}/{params}
controller: App\Controller\LocaleRedirectController::locale
requirements:
_locale: en|fr|de
params: '.+'
И в вашем контроллеречто-то вроде этого:
public function localeAction(Request $request, $locale, $params)
{
// set the locale sticky
// https://symfony.com/doc/current/session/locale_sticky_session.html
// redirect to the url without the locale
return new RedirectResponse("/$params");
}
Я на самом деле не пробовал этот код / логику - и не буду этого делать, потому что документация Symfony советует против этого (по уважительным причинам) - поэтому могут быть некоторые небольшие проблемы сэтот пример кода / эта логика, которую вам нужно выяснить для себя, если вы решите пойти по этому пути.