Как перенаправить с параметрами в routing.yml?
В routing.yml вы можете делать такие вещи, как:
redirect_old_url_to_new:
pattern: /old-pattern
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /new-pattern
permanent: true
Будет перенаправлен URL /old-pattern
на /new-pattern
. Однако, если у меня есть параметр, как можно преобразовать параметр в новый путь, например:
redirect_old_url_to_new:
pattern: /old-pattern/{page}
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /new-pattern/{page}
permanent: true
Это НЕ работает и будет перенаправляться на /new-pattern/{page}
буквально и поэтому будет перенаправляться с /old-pattern/23
на /new-pattern/{page}
.
Ответы
Ответ 1
Если имя параметра идентично, тогда параметр будет передан автоматически:
FirstRoute:
pattern: /firstroute/{page}
defaults:
_controller: Bundle:Controller:action
# SecondRoute will redirect to FirstRoute.
# ex: /secondroute/1 redirects to /firstroute/1
SecondRoute:
pattern: /secondroute/{page}
defaults:
_controller: FrameworkBundle:Redirect:redirect
route: FirstRoute
permanent: true
Ответ 2
Похоже, что в книге Symfony есть ошибка
root:
pattern: /
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /app
permanent: true
Как сказал Arms, это "FrameworkBundle: перенаправление: перенаправление", а не "FrameworkBundle: перенаправление: urlRedirect"
Ответ 3
Я раньше ошибался, это работает для меня:
redirection:
path: /exercices.html
defaults:
_controller: FrameworkBundle:Redirect:redirect
route: blog
slug: url-of-the-post
permanent: true
Поместите прямо parameter_name: parameter_value
под route
.
Ответ 4
Вы можете перенаправить корень в .yml следующим образом:
root:
path: redirected_path
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: destination_path
permanent: true|false
или
root:
path: redirected_path
defaults:
_controller: FrameworkBundle:Redirect:redirect
route: destination_route_name
permanent: true|false