带尾斜杠的自定义路由重定向至主域名问题咨询
问题原因与解决方案
这是Symfony(Shopware基于Symfony构建)路由系统的自动尾斜杠重定向机制导致的,结合Shopware多销售渠道的Base URL配置,重定向过程中丢失了/staging前缀。Symfony默认会自动处理路由尾斜杠:要么将带尾斜杠的URL重定向到不带的,要么反过来,这个重定向会在匹配到你的自定义路由之前触发,所以你添加的第二条带尾斜杠的路由根本不会被执行。
解决方法
1. 给路由添加严格匹配规则
在路由注解里加上requirements={"_strict_requirements"="true"},关闭Symfony的自动尾斜杠重定向,这样两个路由可以独立匹配:
@Route("/path", name="frontend.path.index", options={"seo"="false"}, methods={"GET"}, requirements={"_strict_requirements"="true"}) @Route("/path/", name="frontend.path.index.trailing_slash", options={"seo"="false"}, methods={"GET"}, requirements={"_strict_requirements"="true"})
可以让两个路由指向同一个控制器方法,避免重复代码。
2. 全局配置路由尾斜杠规则
在config/packages/routing.yaml中设置全局路由的严格匹配,一次性解决所有路由的尾斜杠问题:
framework: router: strict_requirements: true trailing_slash_on_root: false # 根据你的需求调整是否保留根路径的尾斜杠
开启后,Symfony不会自动处理尾斜杠重定向,所有路由需明确定义带/不带尾斜杠的格式。
3. 验证销售渠道Base URL配置
确认你的http://tld.de/staging销售渠道的Base URL配置完全正确,没有遗漏或错误。Shopware的路由生成依赖这个配置拼接完整URL,若配置有误也会导致重定向时丢失前缀。
内容的提问来源于stack exchange,提问作者Ezycod
相关产品推荐
相关产品推荐

