我需要将 https 放在某些 URL 上,但不是所有 URL 上。我正在使用 zend URl view helper 来查看所有链接。我有一个用于整个网站的 *.example.com SSL 证书。现在我打开网站https://www.example.co https://www.example.co,那么主页或其他页面上的所有链接的URL中都包含https。我怎样才能在 https url 上发出一些特定的请求,而其他页面应该正常打开。
我还需要进行一些重定向,以便如果有人在普通 URL 中打开特定页面,那么他们会在 https url 上重定向。我认为 .htaccess 重定向可以解决这个问题。
有什么帮助吗????
提前致谢!!!
URL ViewHelper 只根据主机名组装绝对路径。所以你需要明确地为 https 链接添加前缀
<? $url = $view->url(array('some' => 'params') /*, $route, $reset*/) ?>
<a href="https://<?= $_SERVER['HTTP_HOST] ?><?= $url ?>">my explicit https link</a>
你也许应该创建一个自己的小viewhelper,它可以为你工作,并且还检查HTTP_HOST是否设置等,也许也可以从配置中而不是从$_SERVER中获取它。
$view->httpsUrl(array('some' => 'params')/、$路线、$重置/);
为了确保安全,定义的请求必须是 https,可以通过添加前端控制器插件甚至是所有其他控制器所基于的抽象控制器类来轻松完成。
插件可能看起来像这样
My_Controller_Plugin_HttpBlacklist extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
// when /foo/bar/baz is requested
if (($request->getModuleName() == 'foo' &&
$request->getControllerName() == 'bar' &&
$request->getControllerName() == 'baz')
/* || (conditions for more requests)*/) {
//very basic confifiotn to see if https is enabled, should be done better...
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
// should be done with Zend_Http_Reponse instead
header('Location: https://'. $_SERVER['HTTP_HOST] . $_SERVER['REQUEST_URI']);
exit;
}
}
}
}
然后只需将其插入即可
$frontController->registerPlugin(new My_Controller_Plugin_HttpBlacklist);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)