https 웹사이트 패치
https 로 웹사이트 프로토콜을 변경할 경우 여러가지 오류가 생기는데요. 기존 메뉴 내용에 http로 접근하기 떄문에 크롬에서 '주의요함'이라는 불빛이 들어옵니다. (빨간색으로)
크롬 최신버전에서는 https 사이트에서 http 주소의 같은 주소를 막는 경우까지 있는데요, 그럴 때는 웹사이트가 전체적으로 깨집니다.
다른 좋은 방법도 있겠지만, 일단 몇가지 함수를 변경하여 이렇게 해결하였습니다.
/////////
CB_url_helper.php:
-- 추가 함수
function check_https()
{
if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443) {
return true;
}
return false;
}
function fix_url($url)
{
$url = trim($url);
if(strpos($url, 'http') === 0 && strpos($url, 'https') !== 0) {
if(check_https())
$url = 'https://'.str_ireplace('http://', '', $url);
}
return $url;
}
function my_base_url($url = '')
{
return fix_url(base_url($url));
}
function my_site_url($url = '')
{
return fix_url(site_url($url));
}
/////////////
Managelayout.php: 수정함수
/**
* 추가된 css를 리턴합니다
*/
function display_css()
{
$return = '';
$_css = $this->css;
if ($_css) {
foreach ($_css as $val) {
$val = fix_url($val);
$return .= '<link rel="stylesheet" type="text/css" href="' . $val . '" />';
}
}
return $return;
}
/**
* 추가된 js를 리턴합니다
*/
function display_js()
{
$return = '';
$_js = $this->js;
if ($_js) {
foreach ($_js as $val) {
$val = fix_url($val);
$return .= '<script type="text/javascript" src="' . $val . '"></script>';
}
}
return $return;
}
//////////////////////////
views/_layout/.../layout.php
<link rel="stylesheet" type="text/css" href="<?php echo my_base_url('assets/css/bootstrap.min.css'); ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo my_base_url('assets/css/bootstrap-theme.min.css'); ?>" />
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="<?php echo fix_url(element('layout_skin_url', $layout)); ?>/css/style.css" />
....
<script type="text/javascript" src="<?php echo my_base_url('assets/js/jquery.hoverIntent.js'); ?>"></script>
<script type="text/javascript" src="<?php echo my_base_url('assets/js/jquery.ba-outside-events.min.js'); ?>"></script>
<script type="text/javascript" src="<?php echo my_base_url('assets/js/iscroll.min.js', 'https'); ?>"></script>
<script type="text/javascript" src="<?php echo my_base_url('assets/js/mobile.sidemenu.js'); ?>"></script>