问题描述
假设我有一个包含多个(子)域的网站:
- acme.com(美国)
- acme.nl(荷兰)
- be.acme.eu(比利时)
- de.acme.eu(德国)
- fr.acme.eu(法国)
- 等等……
我认为这个配置应该很简单,所以我做了这个routing.yml:
usa: host: "acme.com" resource: "@WebsiteBundle/Controller/" type: annotation defaults: country: "en" netherlands: host: "acme.nl" resource: "@WebsiteBundle/Controller/" type: annotation defaults: country: "nl" europe: host: "{country}.acme.eu" resource: "@WebsiteBundle/Controller/" type: annotation
但如果我运行 router:debug,则只有最后一条路线(在本例中为 {country}.acme.eu)显示.如果我更改订单,则会显示最后一个选项.
如何在我的所有国家/地区使用不同的(子)域?
推荐答案
这是因为所有的路由都指向一个资源.以后的每个路由都会覆盖之前定义的路由.
但您可以使用其他解决方案:
main_route: host: "{country}.acme.{domain}" resource: "@WebsiteBundle/Controller/" type: annotation defaults: country: "en"
然后在控制器之前检查一些侦听器以获取有效的 url 和进程参数.