How to force https for prod but http for dev environment?

只谈情不闲聊 提交于 2019-12-03 06:48:01

问题


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.


回答1:


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.




回答2:


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);



回答3:


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.




回答4:


I think you can check the scheme in app_dev.php file and base on that redirect it to https

$url = parse_url($_SERVER['HTTP_REFERER']);
if ($url['scheme'] == 'http') {
   header("Location: https://{$_SERVER['SERVER_NAME']}{$_SERVER['PHP_SELF']}");
}

Or maybe able to apply some changes in .htaccess for app_dev.php in URL



来源:https://stackoverflow.com/questions/23224151/how-to-force-https-for-prod-but-http-for-dev-environment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!