siempre redirigir redireccionar redirecciona forzar como automaticamente php symfony https routing

php - redirigir - ¿Cómo forzar https para prod, pero http para el entorno dev?



redireccionar http a https php (4)

Cambia tus ultimas lineas de app.php asi:

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

Tengo una aplicación symfony2.

En el servidor prod. Quiero que todas mis rutas se realicen a través de https, mientras que en dev quiero poder usar http. ¿Cómo puedo lograr eso con Symfony2 solo? No quiero tocar la configuración del servidor web.

Intenté agregar esto en mi routing.yml

myBundle: resource: "@MyBundle/Controller/" type: annotation prefix: / schemes: [https]

mientras tengo esto en mi routing_dev.yml :

myBundle: resource: "@MyBundle/Controller/" type: annotation prefix: / schemes: [http] _main: resource: routing.yml

Todavía quiere ir a https incluso en modo dev.


Creo que puedes revisar el esquema en el archivo app_dev.php y basarlo en eso redirigirlo a https

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

O tal vez pueda aplicar algunos cambios en .htaccess para app_dev.php en la URL


Mi primera solución funciona bien, pero uno debe tener cuidado de no sobrescribir las propias rutas en routing_dev.yml . Al final del archivo, tuve

_main: resource: routing.yml

por lo que toda la ruta de mi paquete se cambió de nuevo al esquema https. Ordenar las entradas, para que mi entrada personalizada venga por última vez, resolvió el problema.


Puedes definir el parámetro para eso. En app/config/config.yml define:

parameters: httpProtocol: http

Luego en app/config/config_prod.yml :

parameters: httpProtocol: https

Y en routing.yml cambia a:

myBundle: resource: "@MyBundle/Controller/" type: annotation prefix: / schemes: [''%httpProtocol%'']

Borre la memoria caché (prod y dev) y debería funcionar.