URI 중 /kngil/skin 반복제거. php 확장자 노출 제거

This commit is contained in:
Lectom C Han
2026-02-05 12:09:12 +09:00
parent 8fa50e6d0d
commit 8501529eb6
16 changed files with 50 additions and 37 deletions

View File

@@ -1,6 +1,15 @@
RewriteEngine On RewriteEngine On
# Skip existing files and directories. # 레거시 /kngil/skin/*.php -> /* (확장자 제거)
RewriteRule ^kngil/skin/([^/]+)\.php$ /$1 [R=301,L]
# 레거시 /kngil/*.php -> /* (확장자 제거)
RewriteRule ^kngil/([^/]+)\.php$ /$1 [R=301,L]
# 레거시 /kngil 또는 /kngil/ -> /
RewriteRule ^kngil/?$ / [R=301,L]
# 기존 파일/디렉터리는 그대로 통과
RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L] RewriteRule ^ - [L]
@@ -21,3 +30,7 @@ RewriteRule ^admin/api/product/delete/?$ /kngil/bbs/adm_product_popup_delete.php
RewriteRule ^admin/api/faq/?$ /kngil/bbs/adm_faq_popup.php [QSA,L] RewriteRule ^admin/api/faq/?$ /kngil/bbs/adm_faq_popup.php [QSA,L]
RewriteRule ^admin/api/faq/save/?$ /kngil/bbs/adm_faq_popup_save.php [QSA,L] RewriteRule ^admin/api/faq/save/?$ /kngil/bbs/adm_faq_popup_save.php [QSA,L]
RewriteRule ^admin/api/faq/delete/?$ /kngil/bbs/adm_faq_popup_delete.php [QSA,L] RewriteRule ^admin/api/faq/delete/?$ /kngil/bbs/adm_faq_popup_delete.php [QSA,L]
# 루트 페이지 라우팅: / -> index, /{page} -> /kngil/skin/{page}.php
RewriteRule ^$ /kngil/skin/index.php [L]
RewriteRule ^([^/]+)$ /kngil/skin/$1.php [L]

View File

@@ -278,7 +278,7 @@ try {
<body> <body>
<script> <script>
(function () { (function () {
const target = '/kngil/skin/index.php'; const target = '/';
if (window.opener && !window.opener.closed) { if (window.opener && !window.opener.closed) {
try { try {
window.opener.postMessage({ type: 'OIDC_LOGIN_SUCCESS' }, window.location.origin); window.opener.postMessage({ type: 'OIDC_LOGIN_SUCCESS' }, window.location.origin);
@@ -295,7 +295,7 @@ try {
})(); })();
</script> </script>
<noscript> <noscript>
<a href="/kngil/skin/index.php">메인으로 이동</a> <a href="/">메인으로 이동</a>
</noscript> </noscript>
</body> </body>
</html> </html>
@@ -305,5 +305,5 @@ try {
} catch (Exception $e) { } catch (Exception $e) {
echo "<h1>로그인 오류</h1>"; echo "<h1>로그인 오류</h1>";
echo "<p>" . htmlspecialchars($e->getMessage()) . "</p>"; echo "<p>" . htmlspecialchars($e->getMessage()) . "</p>";
echo "<a href='/kngil/index.php'>메인으로 돌아가기</a>"; echo "<a href='/'>메인으로 돌아가기</a>";
} }

View File

@@ -2,5 +2,5 @@
session_start(); session_start();
session_destroy(); session_destroy();
header('Location: /kngil/skin/index.php'); header('Location: /');
exit; exit;

View File

@@ -14,7 +14,7 @@ if (session_status() === PHP_SESSION_NONE) {
if (empty($_SESSION['login'])) { if (empty($_SESSION['login'])) {
echo "<script> echo "<script>
alert('로그인 후 이용 가능합니다.'); alert('로그인 후 이용 가능합니다.');
location.href = '/kngil/skin/qa_list.skin.php'; location.href = '/qa_list.skin';
</script>"; </script>";
exit; exit;
} }
@@ -92,7 +92,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet
$pdo->commit(); $pdo->commit();
header("Location: /kngil/skin/qa_list.skin.php"); header("Location: /qa_list.skin");
exit; exit;
} catch (Exception $e) { } catch (Exception $e) {

View File

@@ -1,7 +1,7 @@
<?php <?php
/** /**
* Q&A 리스트 컨트롤러 * Q&A 리스트 컨트롤러
* - 스킨: /kngil/skin/qa_list.skin.php * - 스킨: /kngil/skin/qa_list.skin.php (URL: /qa_list.skin)
*/ */
ini_set('display_errors', 1); ini_set('display_errors', 1);

View File

@@ -17,7 +17,7 @@ if (session_status() === PHP_SESSION_NONE) {
if (empty($_SESSION['login'])) { if (empty($_SESSION['login'])) {
echo "<script> echo "<script>
alert('로그인이 필요합니다.'); alert('로그인이 필요합니다.');
location.href = '/kngil/skin/qa_list.skin.php'; location.href = '/qa_list.skin';
</script>"; </script>";
exit; exit;
} }

View File

@@ -13,11 +13,11 @@
VISITED_STORAGE_KEY: 'visited', VISITED_STORAGE_KEY: 'visited',
VIDEO_BASE_PATH: '../img/video', VIDEO_BASE_PATH: '../img/video',
PAGE_LINKS: { PAGE_LINKS: {
1: '/kngil/skin/value.php', 1: '/value',
2: '/kngil/skin/provided.php', 2: '/provided',
3: '/kngil/skin/primary.php', 3: '/primary',
4: '/kngil/skin/analysis.php', 4: '/analysis',
5: '/kngil/skin/results.php' 5: '/results'
}, },
SELECTORS: { SELECTORS: {
video: '#video_play', video: '#video_play',

View File

@@ -18,19 +18,19 @@
<div class="comp-contact"> <div class="comp-contact">
<ul class="footer-menu"> <ul class="footer-menu">
<li> <li>
<a href="value.php">KNGIL</a> <a href="/value">KNGIL</a>
</li> </li>
<li> <li>
<a href="provided.php">제공데이터</a> <a href="/provided">제공데이터</a>
</li> </li>
<li> <li>
<a href="primary.php">주요기능</a> <a href="/primary">주요기능</a>
</li> </li>
<li> <li>
<a href="analysis.php">데이터분석</a> <a href="/analysis">데이터분석</a>
</li> </li>
<li> <li>
<a href="results.php">성과품</a> <a href="/results">성과품</a>
</li> </li>
</ul> </ul>
<div class="footer-family"> <div class="footer-family">

View File

@@ -229,14 +229,14 @@ $isCompanyAdmin = in_array($auth, ['BS100100', 'BS100200', 'BS100300', 'BS100400
<div class="floating-menu"> <div class="floating-menu">
<ul> <ul>
<li class="floating-faq"> <li class="floating-faq">
<a href="/kngil/skin/qa_list.skin.php"> <a href="/qa_list.skin">
<i class="ico-faq"></i> <i class="ico-faq"></i>
<span>Q&A</span> <span>Q&A</span>
</a> </a>
</li> </li>
<li class="floating-buy"> <li class="floating-buy">
<a href="/kngil/skin/buy.php"> <a href="/buy">
<i class="ico-buy"></i> <i class="ico-buy"></i>
<span>구매하기</span> <span>구매하기</span>
</a> </a>

View File

@@ -1,6 +1,6 @@
<ul class="sitemap"> <ul class="sitemap">
<li class="value"> <li class="value">
<a href="/kngil/skin/value.php"> <a href="/value">
<span>KNGIL</span> <span>KNGIL</span>
<p> <p>
공공데이터 기반으로<br> 공공데이터 기반으로<br>
@@ -12,7 +12,7 @@
<div class="bg-line down"></div> <div class="bg-line down"></div>
</li> </li>
<li class="provided"> <li class="provided">
<a href="/kngil/skin/provided.php"> <a href="/provided">
<span>제공데이터</span> <span>제공데이터</span>
<p> <p>
항목별 공공데이터를 기반으로<br> 항목별 공공데이터를 기반으로<br>
@@ -26,7 +26,7 @@
<div class="bg-line up"></div> <div class="bg-line up"></div>
</li> </li>
<li class="primary"> <li class="primary">
<a href="/kngil/skin/primary.php"> <a href="/primary">
<span>주요기능</span> <span>주요기능</span>
<p> <p>
기초현황 보고서 설정 등에 대한 <br> 기초현황 보고서 설정 등에 대한 <br>
@@ -40,7 +40,7 @@
<div class="bg-line down"></div> <div class="bg-line down"></div>
</li> </li>
<li class="analysis"> <li class="analysis">
<a href="/kngil/skin/analysis.php"> <a href="/analysis">
<span>데이터분석</span> <span>데이터분석</span>
<p> <p>
데이터의 특성과 형태에 따라 <br> 데이터의 특성과 형태에 따라 <br>
@@ -54,7 +54,7 @@
<div class="bg-line up"></div> <div class="bg-line up"></div>
</li> </li>
<li class="results"> <li class="results">
<a href="/kngil/skin/results.php"> <a href="/results">
<span>성과품</span> <span>성과품</span>
<p> <p>
데이터 분석 결과를 기반으로<br> 데이터 분석 결과를 기반으로<br>

View File

@@ -82,7 +82,7 @@
</ul> </ul>
</div> </div>
<div class="btn-wrap"> <div class="btn-wrap">
<a href="/kngil/skin/faq_list.skin.php" class="btn-contact"> <a href="/faq_list.skin" class="btn-contact">
<i class="ico-contact"></i> <i class="ico-contact"></i>
KNGIL 구매문의 KNGIL 구매문의
</a> </a>

View File

@@ -63,7 +63,7 @@
<ul class="sub-tab"> <ul class="sub-tab">
<li class="on"> <li class="on">
<a href="/kngil/skin/faq_list.skin.php">자주하는 질문(FAQ)</a> <a href="/faq_list.skin">자주하는 질문(FAQ)</a>
</li> </li>
<li> <li>
<a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a> <a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a>

View File

@@ -29,7 +29,7 @@
if (!$isLogin) { if (!$isLogin) {
echo "<script> echo "<script>
alert('로그인 후 문의 등록이 가능합니다.'); alert('로그인 후 문의 등록이 가능합니다.');
location.href = '/kngil/skin/qa_list.skin.php'; location.href = '/qa_list.skin';
</script>"; </script>";
exit; exit;
} }
@@ -56,7 +56,7 @@
<p class="sub-txt">KNGIL 관련 문의하기</p> <p class="sub-txt">KNGIL 관련 문의하기</p>
</div> </div>
<ul class="sub-tab"> <ul class="sub-tab">
<li><a href="/kngil/skin/faq_list.skin.php">자주하는 질문(FAQ)</a></li> <li><a href="/faq_list.skin">자주하는 질문(FAQ)</a></li>
<li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li> <li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li>
<li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li> <li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li>
</ul> </ul>

View File

@@ -56,7 +56,7 @@
<p class="sub-txt">KNGIL 관련 문의하기</p> <p class="sub-txt">KNGIL 관련 문의하기</p>
</div> </div>
<ul class="sub-tab"> <ul class="sub-tab">
<li><a href="/kngil/skin/faq_list.skin.php">자주하는 질문(FAQ)</a></li> <li><a href="/faq_list.skin">자주하는 질문(FAQ)</a></li>
<li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li> <li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li>
<li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li> <li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li>
</ul> </ul>
@@ -233,7 +233,7 @@
</div> </div>
<?php endif ?> <?php endif ?>
<div class="btn-wrap right"> <div class="btn-wrap right">
<button type="button" class="btn-primary" onclick="location.href='/kngil/skin/qa_write.skin.php'"> <button type="button" class="btn-primary" onclick="location.href='/qa_write.skin'">
<i class="fa fa-pencil" aria-hidden="true"></i> 문의등록 <i class="fa fa-pencil" aria-hidden="true"></i> 문의등록
</button> </button>
</div> </div>

View File

@@ -58,7 +58,7 @@
<span>EG-BIM 관련 문의하기</span> <span>EG-BIM 관련 문의하기</span>
</div> </div>
<ul class="sub_tab"> <ul class="sub_tab">
<li><a href="/kngil/skin/faq_list.skin.php">자주하는 질문(FAQ)</a></li> <li><a href="/faq_list.skin">자주하는 질문(FAQ)</a></li>
<li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li> <li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li>
<li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li> <li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li>
</ul> </ul>
@@ -235,7 +235,7 @@
<?php endif ?> <?php endif ?>
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-write" onclick="location.href='/kngil/skin/qa_write.skin.php'"> <button type="button" class="btn btn-write" onclick="location.href='/qa_write.skin'">
<i class="fa fa-pencil" aria-hidden="true"></i> 문의등록 <i class="fa fa-pencil" aria-hidden="true"></i> 문의등록
</button> </button>
</div> </div>

View File

@@ -46,7 +46,7 @@
if (!$isLogin) { if (!$isLogin) {
echo "<script> echo "<script>
alert('로그인 후 문의 등록이 가능합니다.'); alert('로그인 후 문의 등록이 가능합니다.');
location.href = '/kngil/skin/qa_list.skin.php'; location.href = '/qa_list.skin';
</script>"; </script>";
exit; exit;
} }
@@ -70,7 +70,7 @@
<p class="sub-txt">KNGIL 관련 문의하기</p> <p class="sub-txt">KNGIL 관련 문의하기</p>
</div> </div>
<ul class="sub-tab"> <ul class="sub-tab">
<li><a href="/kngil/skin/faq_list.skin.php">자주하는 질문(FAQ)</a></li> <li><a href="/faq_list.skin">자주하는 질문(FAQ)</a></li>
<li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li> <li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li>
<li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li> <li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li>
</ul> </ul>