SubdomainRedirectListener (priority 256, KernelEvents::REQUEST) :
- webmail.siteconseil.fr → /webmail (app_webmail_login)
- status.siteconseil.fr → /status (app_status)
- Ignore les sub-requests, ne redirige pas si déjà sur la bonne route
- Mapping dans constante SUBDOMAIN_ROUTES (extensible)
Tests (6 tests) :
- testWebmailRedirect : host webmail → redirect /webmail
- testStatusRedirect : host status → redirect /status
- testNoRedirectOnCrmHost : host crm → pas de redirect
- testNoRedirectWhenAlreadyOnTarget : déjà sur /webmail → pas de redirect
- testNoRedirectOnSubPath : /status/api → pas de redirect
- testSubRequestIgnored : sub-request ignorée
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>