Symfony2でhttpへのアクセスをすべてhttpsに投げるためのイベントリスナーの書き方です。
nginxとかで直接ぶん投げる方法も考えましたが、これが一番便利でした。
app/config/config.yml
acme.yourbundle.event.request.listener: class: Acme\YourBundle\EventListener\RequestListener arguments: tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
Acme/YourBundle/EventListener/RequestListener.php
<?php namespace Acme\YourBundle\EventListener; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; class RequestListener { public function onKernelRequest(GetResponseEvent $event){ $request = $event->getRequest(); if (!$request->isSecure()) { $request->server->set('HTTPS', true); $request->server->set('SERVER_PORT', 443); $event->setResponse(new RedirectResponse($request->getUri())); } } }