diff --git a/.htaccess b/.htaccess index 53f06b2..7c7c78d 100644 --- a/.htaccess +++ b/.htaccess @@ -16,6 +16,18 @@ RewriteRule ^kngil/skin/adm\.php$ /admin [R=301,L] RewriteCond %{THE_REQUEST} \s/+kngil/skin/index\.php [NC] RewriteRule ^kngil/skin/index\.php$ / [R=301,L] +# 레거시 /kngil/skin/*.skin.php -> /* (확장자 제거) +RewriteCond %{THE_REQUEST} \s/+kngil/skin/([^\s]+)\.skin\.php [NC] +RewriteRule ^kngil/skin/([^/]+)\.skin\.php$ /$1 [R=301,L] + +# 레거시 /*.skin -> /* (확장자 제거) +RewriteCond %{THE_REQUEST} \s+/([^\s]+)\.skin [NC] +RewriteRule ^([^/]+)\.skin$ /$1 [R=301,L] + +# 레거시 /kngil/*.skin -> /* (확장자 제거) +RewriteCond %{THE_REQUEST} \s/+kngil/([^\s]+)\.skin [NC] +RewriteRule ^kngil/([^/]+)\.skin$ /$1 [R=301,L] + # 레거시 /kngil/skin/*.php -> /* (확장자 제거) RewriteCond %{THE_REQUEST} \s/+kngil/skin/([^\s]+)\.php [NC] RewriteRule ^kngil/skin/([^/]+)\.php$ /$1 [R=301,L] @@ -57,6 +69,11 @@ 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/delete/?$ /kngil/bbs/adm_faq_popup_delete.php [QSA,L] +# Q&A 라우팅 (컨트롤러 우선) +RewriteRule ^qa_list/?$ /kngil/bbs/qa_list.php [QSA,L] +RewriteRule ^qa_detail/?$ /kngil/bbs/qa_detail.php [QSA,L] +RewriteRule ^qa_write/?$ /kngil/bbs/qa_write.php [QSA,L] + # 루트 페이지 라우팅: / -> index, /{page} -> /kngil/skin/{page}.php RewriteRule ^$ /kngil/skin/index.php [L] RewriteRule ^([^/]+)$ /kngil/skin/$1.php [L] diff --git a/kngil/auth/oidc-callback.php b/kngil/auth/oidc-callback.php index 89df935..586e8c3 100644 --- a/kngil/auth/oidc-callback.php +++ b/kngil/auth/oidc-callback.php @@ -1,6 +1,7 @@ $params['lifetime'], + 'path' => '/', + 'domain' => $params['domain'], + 'secure' => $params['secure'], + 'httponly' => $params['httponly'], + 'samesite' => $samesite, + ]); + + session_start(); +} diff --git a/kngil/bbs/login.php b/kngil/bbs/login.php index 23cbf5b..85a6cb8 100644 --- a/kngil/bbs/login.php +++ b/kngil/bbs/login.php @@ -1,5 +1,6 @@ true, 'message' => $e->getMessage() ], JSON_UNESCAPED_UNICODE); -} \ No newline at end of file +} diff --git a/kngil/bbs/qa_detail.php b/kngil/bbs/qa_detail.php index afe05f4..0ff584b 100644 --- a/kngil/bbs/qa_detail.php +++ b/kngil/bbs/qa_detail.php @@ -14,7 +14,7 @@ if (session_status() === PHP_SESSION_NONE) { if (empty($_SESSION['login'])) { echo ""; exit; } @@ -92,7 +92,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delet $pdo->commit(); - header("Location: /qa_list.skin"); + header("Location: /qa_list"); exit; } catch (Exception $e) { @@ -230,4 +230,4 @@ $isOwner = ($post['user_id'] === $me); /* =============================== 12. 스킨 렌더링 =============================== */ -include $_SERVER['DOCUMENT_ROOT'].'/kngil/skin/qa_detail.skin.php'; +include $_SERVER['DOCUMENT_ROOT'].'/kngil/skin/qa_detail.php'; diff --git a/kngil/bbs/qa_list.php b/kngil/bbs/qa_list.php index 9923d5d..fce207e 100644 --- a/kngil/bbs/qa_list.php +++ b/kngil/bbs/qa_list.php @@ -1,7 +1,7 @@ alert('로그인이 필요합니다.'); - location.href = '/qa_list.skin'; + location.href = '/qa_list'; "; exit; } @@ -216,7 +216,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { handle_file_uploads($pdo, $postId); } - header("Location: /kngil/bbs/qa_detail.php?id={$postId}"); + header("Location: /qa_detail?id={$postId}"); exit; } catch (Exception $e) { @@ -228,4 +228,4 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { /* =============================== 7. 화면 출력 =============================== */ -include $_SERVER['DOCUMENT_ROOT'].'/kngil/skin/qa_write.skin.php'; +include $_SERVER['DOCUMENT_ROOT'].'/kngil/skin/qa_write.php'; diff --git a/kngil/skin/_header.php b/kngil/skin/_header.php index 8538595..f2d4bd6 100644 --- a/kngil/skin/_header.php +++ b/kngil/skin/_header.php @@ -1,9 +1,6 @@
KNGIL 관련 문의하기