found it — the actual page 폼(form)들이 잘못된 URL로 제출되고 있었습니다. pages.php의 폼 action이 여전히 BASE_URL을 쓰고 있어서 요청 자체가 컨트롤러에 도달하지 못하고 있었습니다.
Now let's check the rest of the codebase for the same action="<?= BASE_URL ?>/admin/... pattern in every admin view, since this has proven to be a recurring copy-paste bug.
Good, that's the only remaining instance and it's dead/unrouted code (not referenced anywhere), so it's not affecting anything live. Let's verify the fix with a syntax/response check.
진짜 원인을 찾았습니다. 이전에 컨트롤러의 리다이렉트(header("Location: ..."))는 고쳤지만, 그보다 앞단에서 폼 자체가 잘못된 URL로 제출되고 있었습니다.
의 폼 3개가 여전히 BASE_URL(테넌트 경로 없음)로 제출하고 있었습니다:
- 99번째 줄: 삭제 폼 →
BASE_URL/admin/pages/delete/... - 115번째 줄: 페이지 복사 폼 →
BASE_URL/admin/pages/save - 139번째 줄: 생성/수정 폼 →
BASE_URL/admin/pages/save
라우터는 URL 첫 세그먼트를 테넌트 핸들(namroki)로 인식해서 떼어내는 구조라, admin이 테넌트로 인식되지 않아 요청이 컨트롤러(pagesSave())에 아예 도달하지 못했습니다. 그래서 DB에 아무것도 저장되지 않고, 에러 메시지도 없이 조용히 다른 곳으로 흘러간 것입니다. 다른 정상 동작하는 관리자 화면들(boards.php, design.php 등)은 전부 TENANT_BASE_URL을 쓰고 있었는데, pages.php만 예전 코드가 남아있었습니다.
세 곳 모두 TENANT_BASE_URL로 수정했습니다. 이제 http://localhost/lab.xzine.kr/namroki/admin/pages에서 생성/수정/삭제/복사가 정상적으로 컨트롤러에 도달할 것입니다. 다시 한 번 새 페이지 생성을 시도해보세요.
참고: 페이지 ID 중복 체크(pagesSave())가 테넌트별로 구분되지 않고 전체 테넌트에서 공통으로 검사되는 점을 발견했습니다 (provision, privacy 같은 페이지 ID는 이미 다른 테넌트(ms01)가 쓰고 있어 같은 ID로는 생성 불가). 지금 요청하신 문제와는 별개라 손대지 않았는데, 특정 페이지 ID로 생성이 안 될 경우 이 부분이 원인일 수 있어 참고로 남깁니다.
댓글 0