$errorLog->pushHandler(new StreamHandler('log/error.log', Logger::DEBUG)); ErrorHandler::register($errorLog); $accessLog = new Logger('error'); $accessLog->pushHandler(new StreamHandler('log/access.log', Logger::DEBUG)); $filesystemAdapter = new Local('cache/'); $filesystem = new Filesystem($filesystemAdapter); $pool = new FilesystemCachePool($filesystem); $app->pipe(Middleware::ClientIp()->remote(false)); // required for AccessLog, Geolocate $app->pipe(Middleware::AccessLog($accessLog)->combined(true)); $app->pipe(Middleware::TrailingSlash(false)->redirect(301)); $app->pipe(Middleware::FormatNegotiator()); // required for Expires, Minify //$app->pipe(Middleware::Expires()); //$app->pipe(Middleware::Minify()); $app->pipe(Middleware::BlockSpam()); //$app->pipe(Middleware::PhpSession()->name('DetectorSessionId')); //$app->pipe(Middleware::Geolocate()->saveInSession(true)); //$app->pipe(Middleware::Cache($pool)); $app->pipe(Middleware::responseTime()); $app->pipeRoutingMiddleware(); $app->pipeDispatchMiddleware(); $cache = new File(array(File::DIR => 'cache/')); $app->get('/js/features.js', function (RequestInterface $request, ResponseInterface $response, callable $next) use($errorLog, $cache) { $response->withAddedHeader('content-type', 'application/x-javascript'); $response->getBody()->write(Modernizr::buildJs()); $detector = new Detector($cache, $errorLog); $cookieID = $detector->getCookieId($_SERVER); $response->getBody()->write(Modernizr::buildConvertJs($cookieID, '', false)); return $response; });