그누보드 [G5] http:// 도메인에 www 를 무조건 넣거나 빼기 & https:// 로 이동하기 (포워딩)
페이지 정보
본문
php로 common.php 첫줄에서 실행하는 방법입니다
다른 곳에서 하면 그누보드에서 사용하는 lib화일들을 모두 로드한 후 실행하기 때문에 http인지 https인지 구분에 오류가 있을수 있습니다
그누보드 / common.php 의 맨위 <?php 아래에 넣습니다
아래 3가지 내용중 원하는 방식의 것을 적용하세요
1. www 붙이면서 https 로 이동하기
아래 2가지 방법중에서 선택적으로 하나만 적용합니다
[ 방법.1 ] 그누보드 / common.php 의 맨위 <?php 아래에 넣습니다
[ 방법.1-1 ]
// www 붙이면서 https 로 이동하기
if((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // https: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') === false) {
$https_goto_url = 'https://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
} elseif((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // http: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') === false) { // www 없으면 www 추가하고 http:// 연결
$https_goto_url = 'https://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
} elseif(strpos($_SERVER['HTTP_HOST'],'www.') !== false) { // www 있으면 그냥 https:// 연결
$https_goto_url = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
}
[ 방법.1-2 ] 2023-04-14 새로 만든 방법
// www 붙이면서 https 로 이동하기 시작
// https: 일때
if((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) {
if(strpos($_SERVER['HTTP_HOST'],'www.') === false) {
$https_forwarded_url = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_forwarded_url}");
}
}
// http: 일때
elseif((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) {
// www 있으면
if(strpos($_SERVER['HTTP_HOST'],'www.') !== false) {
$https_forwarded_url = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_forwarded_url}");
}
// www 없으면
else {
$https_forwarded_url = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_forwarded_url}");
}
}
// www 붙이면서 https 로 이동하기 끝
[ 방법.2] 그누보드 / theme / basic / head.sub.php 상단에 넣기
// https 로 이동하면 www 추가 이동하기
$https_goto_url = "";
if (!preg_match('/www/', $_SERVER['SERVER_NAME']) == true) { // www 없을때
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "on"){
$ssl_port = ""; // 443 포트를 사용하지 않는경우에 이용할 포트번호 입력
if ($ssl_port == "") {
$https_goto_url = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
} else {
$https_goto_url = "https://www.".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
}
// php 문서 최상단에 위치해야 정상 작동
//header("Location: ".$https_goto_url);
echo "<script>\n";
echo "location.href = '{$https_goto_url}';\n"; // 현재창으로 전송
//echo "parent.location.href='{$https_goto_url}';\n"; // 부모창으로 전송
echo "</script>\n";
}
} else { // www 있을때
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "on"){
$ssl_port = ""; // 443 포트를 사용하지 않는경우에 이용할 포트번호 입력
if ($ssl_port == "") {
$https_goto_url = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
} else {
$https_goto_url = "https://".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
}
// php 문서 최상단에 위치해야 정상 작동
//header("Location: ".$https_goto_url);
echo "<script>\n";
echo "location.href = '{$https_goto_url}';\n"; // 현재창으로 전송
//echo "parent.location.href='{$https_goto_url}';\n"; // 부모창으로 전송
echo "</script>\n";
}
}
//echo "https 로 이동하면 www 추가 이동하기<br>";
//echo $https_goto_url ."<br><br>";
2. www 제거하고 https 로 이동하기
// www 제거하고 https 로 이동하기
if((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // https: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') !== false) {
$https_goto_url = 'https://'.str_replace("www.", "", $_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
} elseif((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // http: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') !== false) { // www 있으면 www 빼고 https:// 연결
$https_goto_url = 'https://'.str_replace("www.", "", $_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
} elseif(strpos($_SERVER['HTTP_HOST'],'www.') === false) { // www 없으면 그냥 https:// 연결
$https_goto_url = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
}
3. 서브도메인.cafe24.com 을 www.도메인.com 으로 바꾸면서 https 로 이동하기
https://www.happyjung.com/lecture/3223 으로 강좌를 이동해서 새롭게 등록 했습니다.
참고자료
https://sir.kr/g5_tip/15414
https://m.blog.naver.com/awspro/221904637678
https://stackoverflow.com/questions/8830060/notice-undefined-index-http-x-forwarded-proto-in-c-users-me-project-index-php
다른 곳에서 하면 그누보드에서 사용하는 lib화일들을 모두 로드한 후 실행하기 때문에 http인지 https인지 구분에 오류가 있을수 있습니다
그누보드 / common.php 의 맨위 <?php 아래에 넣습니다
아래 3가지 내용중 원하는 방식의 것을 적용하세요
1. www 붙이면서 https 로 이동하기
아래 2가지 방법중에서 선택적으로 하나만 적용합니다
[ 방법.1 ] 그누보드 / common.php 의 맨위 <?php 아래에 넣습니다
[ 방법.1-1 ]
// www 붙이면서 https 로 이동하기
if((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // https: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') === false) {
$https_goto_url = 'https://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
} elseif((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // http: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') === false) { // www 없으면 www 추가하고 http:// 연결
$https_goto_url = 'https://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
} elseif(strpos($_SERVER['HTTP_HOST'],'www.') !== false) { // www 있으면 그냥 https:// 연결
$https_goto_url = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
}
[ 방법.1-2 ] 2023-04-14 새로 만든 방법
// www 붙이면서 https 로 이동하기 시작
// https: 일때
if((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) {
if(strpos($_SERVER['HTTP_HOST'],'www.') === false) {
$https_forwarded_url = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_forwarded_url}");
}
}
// http: 일때
elseif((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) {
// www 있으면
if(strpos($_SERVER['HTTP_HOST'],'www.') !== false) {
$https_forwarded_url = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_forwarded_url}");
}
// www 없으면
else {
$https_forwarded_url = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_forwarded_url}");
}
}
// www 붙이면서 https 로 이동하기 끝
[ 방법.2] 그누보드 / theme / basic / head.sub.php 상단에 넣기
// https 로 이동하면 www 추가 이동하기
$https_goto_url = "";
if (!preg_match('/www/', $_SERVER['SERVER_NAME']) == true) { // www 없을때
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "on"){
$ssl_port = ""; // 443 포트를 사용하지 않는경우에 이용할 포트번호 입력
if ($ssl_port == "") {
$https_goto_url = "https://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
} else {
$https_goto_url = "https://www.".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
}
// php 문서 최상단에 위치해야 정상 작동
//header("Location: ".$https_goto_url);
echo "<script>\n";
echo "location.href = '{$https_goto_url}';\n"; // 현재창으로 전송
//echo "parent.location.href='{$https_goto_url}';\n"; // 부모창으로 전송
echo "</script>\n";
}
} else { // www 있을때
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "on"){
$ssl_port = ""; // 443 포트를 사용하지 않는경우에 이용할 포트번호 입력
if ($ssl_port == "") {
$https_goto_url = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
} else {
$https_goto_url = "https://".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
}
// php 문서 최상단에 위치해야 정상 작동
//header("Location: ".$https_goto_url);
echo "<script>\n";
echo "location.href = '{$https_goto_url}';\n"; // 현재창으로 전송
//echo "parent.location.href='{$https_goto_url}';\n"; // 부모창으로 전송
echo "</script>\n";
}
}
//echo "https 로 이동하면 www 추가 이동하기<br>";
//echo $https_goto_url ."<br><br>";
2. www 제거하고 https 로 이동하기
// www 제거하고 https 로 이동하기
if((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // https: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') !== false) {
$https_goto_url = 'https://'.str_replace("www.", "", $_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
} elseif((isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')) { // http: 일때
if(strpos($_SERVER['HTTP_HOST'],'www.') !== false) { // www 있으면 www 빼고 https:// 연결
$https_goto_url = 'https://'.str_replace("www.", "", $_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
} elseif(strpos($_SERVER['HTTP_HOST'],'www.') === false) { // www 없으면 그냥 https:// 연결
$https_goto_url = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:{$https_goto_url}");
}
}
3. 서브도메인.cafe24.com 을 www.도메인.com 으로 바꾸면서 https 로 이동하기
https://www.happyjung.com/lecture/3223 으로 강좌를 이동해서 새롭게 등록 했습니다.
참고자료
https://sir.kr/g5_tip/15414
https://m.blog.naver.com/awspro/221904637678
https://stackoverflow.com/questions/8830060/notice-undefined-index-http-x-forwarded-proto-in-c-users-me-project-index-php