I have a symfony2 application.
On the prod server I want all my routes to go via https, while in dev I want to be able to use http. How do I achieve that with symfony2 alone? I do not want to touch the webserver configuration.
I tried adding this in my routing.yml
myBundle:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /
    schemes:  [https]
while having this in my routing_dev.yml:
myBundle:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /
    schemes:  [http]
_main:
    resource: routing.yml
It still wants to go to https even in dev mode.
You can define parameter for that. In app/config/config.yml define:
parameters:     httpProtocol: http   Then in app/config/config_prod.yml:
parameters:     httpProtocol: https   And in routing.yml change to:
myBundle:     resource: "@MyBundle/Controller/"     type:     annotation     prefix:   /     schemes:  ['%httpProtocol%']   Clear the cache (both prod and dev) and it should work.
Change your app.php last lines like this:
if ($request->getScheme() === 'http') {     $urlRedirect = str_replace($request->getScheme(), 'https', $request->getUri());     $response = new RedirectResponse($urlRedirect); } else {     $response = $kernel->handle($request); }  $response->send();  $kernel->terminate($request, $response); 
                        My first solution works fine, yet one should take care to not overwrite one own's routes in the routing_dev.yml. At the end of the file, I had 
_main:
    resource: routing.yml
so all my bundle route was changed back to the https-scheme. Ordering the entries, so that my custom entry comes last resolved the issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With