Intereting Posts
nginx localhost загружает php-файлы в браузере, а не обслуживает их? Что означают запятые в объявлении переменной? Файл не считывается с помощью file_get_html PHP preend ведет ноль перед одноразрядным числом, на лету Хорошее программное обеспечение для анализа / статистики с открытым исходным кодом на PHP? Изменение заголовка CCK для формы Использовать множественные аргументы «отношения» в функции постфактора AJAX двоичный параметр данных в cURL Какой HTML Parser (желательно PHP) поддерживает получение смещения текущего узла во входной строке? Laravel 4 – Перенаправление :: маршрут с параметрами Временное сохранение изображения в php только при отображении на веб-странице Codeigniter AND OR AND XML с различным количеством дочерних узлов для каждого родительского узла Задайте значение переменной в одной функции и используйте в других функциях при вызове непосредственно из ссылки в codeigniter FOSOAuthServerBundle с FOSUserBundle – как это сделать?

Как заставить https для prod, но http для среды dev?

У меня есть приложение symfony2.

На prod-сервере я хочу, чтобы все мои маршруты проходили через https, а в dev я хочу иметь возможность использовать http. Как достичь этого с помощью symfony2? Я не хочу прикасаться к конфигурации веб-сервера.

Я попытался добавить это в свой routing.yml

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

имея это в моем routing_dev.yml :

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

Он по-прежнему хочет перейти на https даже в режиме dev.

Вы можете определить для этого параметр. В app/config/config.yml определите:

 parameters: httpProtocol: http 

Затем в app/config/config_prod.yml :

 parameters: httpProtocol: https 

И в routing.yml измените на:

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

Очистите кеш (как prod, так и dev), и он должен работать.

Измените последние строки app.php следующим образом:

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

Мое первое решение работает отлично, но нужно позаботиться о том, чтобы не перезаписывать свои собственные маршруты в routing_dev.yml . В конце файла у меня было

 _main: resource: routing.yml 

поэтому весь мой маршрут был изменен на https-схему. Заказ записей, так что моя пользовательская запись в последний раз разрешила проблему.

Я думаю, вы можете проверить схему в файле app_dev.php и базе, чтобы перенаправить ее на https

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

Или, возможно, можно применить некоторые изменения в .htaccess для app_dev.php в URL-адресе