我已经在页面数量上应用了https重定向,但每当我通过ZF2重定向进入另一条路线时,下一页将打开https。我想仅在选定的页面上应用https。请建议.. ??
答案 0 :(得分:0)
经过大量搜索后我找到了解决方案。只需按照以下步骤更新应用程序的Module.php:
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$eventManager->attach('route', array($this, 'doHttpsRedirect'));
// your code
}
并添加函数doHttpsRedirect,如:
public function doHttpsRedirect(MvcEvent $e)
{
$sm = $e->getApplication()->getServiceManager();
$uri = $e->getRequest()->getUri();
$controller = $e->getRouteMatch()->getParam('controller');
$action = $e->getRouteMatch()->getParam('action');
$securedPages = array('Application\Controller\Login', 'Application\Controller\Register', 'Application\Controller\shopping');
if (in_array($controller, $securedPages)) {
$scheme = $uri->getScheme();
if ($scheme != 'https') {
$uri->setScheme('https');
$response = $e->getResponse();
$response->getHeaders()->addHeaderLine('Location', $uri);
$response->setStatusCode(302);
$response->sendHeaders();
return $response;
}
} else if (!in_array($controller, $securedPages)) {
if ($_SERVER["HTTPS"] == "on") {
$uri->setScheme('http');
$response = $e->getResponse();
$response->getHeaders()->addHeaderLine('Location', $uri);
$response->setStatusCode(302);
$response->sendHeaders();
return $response;
}
}
}
这就是全部...... !!