没有自定义控制器如何配置一个重定向
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.3(当前的稳定版本)。
没有自定义控制器如何配置一个重定向
有时,一个URL需要重定向到另一个URL。你可以通过创建一个新的控制器动作的唯一任务是重定向,但使用RedirectController的FrameworkBundle甚至更容易。
你可以重定向到一个特定的路径(如。/对
)或使用它的名称(如特定的路线。主页
)。
将使用一个路径
假设没有默认控制器/
您的应用程序的路径,你想将这些请求重定向到/应用程序
。您将需要使用urlRedirectAction ()行动,这种新的url重定向:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#配置/ routes.yaml#加载一些路线——一个最终应该路径“/应用程序”控制器:资源:. . / src /控制器/类型:注释前缀:/应用程序#将主页主页:路径:/控制器:欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction默认值:路径:/应用程序永久的:真正的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”>< !——加载一些路线——一个最终应该路径“/应用程序”- - ><进口资源=“. . / src /控制器/”类型=“注释”前缀=“/应用程序”/ >< !——将首页- - ><路线id=“主页”路径=“/”><默认的关键=“_controller”>欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction< /默认的><默认的关键=“路径”>/应用程序< /默认的><默认的关键=“永久”>真正的< /默认的>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ /配置/ routes.php使用欧宝娱乐app下载地址\组件\路由\RouteCollection;使用欧宝娱乐app下载地址\组件\路由\路线;美元路线=新RouteCollection ();/ /加载一些路线——一个最终应该路径“/应用程序”美元appRoutes=美元加载程序- >导入(“. . / src /控制器/”,“注释”);美元appRoutes- >setPrefix (/应用程序的);美元路线- >addCollection (美元appRoutes);/ /重定向的主页美元路线- >add (“主页”,新路线(' / ',(“_controller”= >控欧宝娱乐app下载地址制器的Symfony \包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction”,“路径”= >/应用程序的,“永久”= >真正的)));返回美元路线;
在本例中,您的路由配置/
路径,让RedirectController
把输出重定向到/应用程序
。的永久
开关告诉行动的问题301年
而不是默认的HTTP状态代码302年
HTTP状态代码。
将使用一个路由
假设你从WordPress网站迁移到Symfony,你想重定向欧宝娱乐app下载地址/ wp-admin
的路线sonata_admin_dashboard
。你不知道的道路,只有路线名称。这可以通过使用redirectAction ()行动:
1 2 3 4 5 6 7 8 9 10 11 12 13
#配置/ routes.yaml#……管理:路径:/ wp-admin控制器:欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: redirectAction默认值:路线:sonata_admin_dashboard#做一个永久重定向…永久的:真正的#……和keep the original query string parameters< /span>keepQueryParams:真正的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”>< !——……- - ><路线id=“admin”路径=“/ wp-admin”><默认的关键=“_controller”>欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: redirectAction< /默认的><默认的关键=“路线”>sonata_admin_dashboard< /默认的>< !——做一个永久重定向…- - ><默认的关键=“永久”>真正的< /默认的>< !——……和keep the original query string parameters -->< /span><默认的关键=“keepQueryParams”>真正的< /默认的>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ /配置/ routes.php使用欧宝娱乐app下载地址\组件\路由\RouteCollection;使用欧宝娱乐app下载地址\组件\路由\路线;美元路线=新RouteCollection ();/ /……美元路线- >add (“管理”,新路线(' / wp-admin ',(“_controller”= >控欧宝娱乐app下载地址制器的Symfony \包\ FrameworkBundle \ \ RedirectController:: redirectAction”,“路线”= >“sonata_admin_dashboard”,/ /做一个永久重定向…“永久”= >真正的,/ /……和keep the original query string parameters< /span>“keepQueryParams”= >真正的)));返回美元路线;
4.1
的keepQueryParams
选项是在Symfony 4.1中引入的。欧宝娱乐app下载地址
谨慎
因为你是重定向路由,而不是一个路径,所需的选项路线
在重定向()
行动,而不是路径
在urlRedirect ()
行动。
重定向时保持请求方法
4.1
功能保持请求方法时重定向是在Symfony 4.1中引入的。欧宝娱乐app下载地址
在前面的例子使用执行的重定向301年
和302年
HTTP状态代码。对于遗留原因,这些HTTP重定向改变的方法帖子
请求得到
(因为重定向帖子
请求没有工作在老的浏览器)。
然而,在某些情况下的预期或要求重定向请求使用相同的HTTP方法。这就是为什么HTTP标准定义了两个额外的状态码(307年
和308年
)来执行临时或永久重定向,保持原始请求的方法。
的urlRedirectAction ()和redirectAction ()方法接受一个额外的参数keepRequestMethod
。当设置为真正的
、临时重定向使用307年
代码代替302年
和永久重定向使用308年
代码代替301年
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#配置/ routes.yaml# 308状态码重定向route_foo:#……控制器:欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: redirectAction默认值:#……永久的:真正的keepRequestMethod:真正的# 307状态码重定向route_bar:#……控制器:欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: redirectAction默认值:#……永久的:假keepRequestMethod:真正的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
< !——配置/路线。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><路线xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/routing //www.oldmanjams.com/schema/routing/routing-1.0.xsd”>< !——重定向308状态代码- - ><路线id=“route_foo”路径=“…”>< !——……- - ><默认的关键=“_controller”>欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction< /默认的><默认的关键=“永久”>真正的< /默认的><默认的关键=“keepRequestMethod”>真正的< /默认的>< /路线>< !——重定向307状态代码- - ><路线id=“route_bar”路径=“…”>< !——……- - ><默认的关键=“_controller”>欧宝娱乐app下载地址Symfony控制器\包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction< /默认的><默认的关键=“永久”>假< /默认的><默认的关键=“keepRequestMethod”>真正的< /默认的>< /路线>< /路线>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ /配置/ routes.php使用欧宝娱乐app下载地址\组件\路由\RouteCollection;使用欧宝娱乐app下载地址\组件\路由\路线;美元集合=新RouteCollection ();/ /重定向308状态码美元集合- >add (“route_foo”,新路线(“……”,(/ /……“_controller”= >控欧宝娱乐app下载地址制器的Symfony \包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction”,“永久”= >真正的,“keepRequestMethod”= >真正的)));/ /重定向307状态码美元集合- >add (“route_bar”,新路线(“……”,(/ /……“_controller”= >控欧宝娱乐app下载地址制器的Symfony \包\ FrameworkBundle \ \ RedirectController:: urlRedirectAction”,“永久”= >假,“keepRequestMethod”= >真正的)));返回美元集合;