사례 연구

홈페이지 문의가 갑자기 안 들어온다면: 내용 업데이트 뒤 문의 폼이 죽어 있던 사례

홈페이지 사진을 바꾼 뒤 문의 폼이 조용히 멈춘 제조업 고객사 사례. 증상, 원인(정적 파일만 올린 배포), 같은 날 30분 수리, 그리고 사장님이 매달 직접 확인할 수 있는 체크 항목 하나.

홈페이지 문의 폼홈페이지 수정유지보수사례
Gaebari

증상

지방의 한 제조업 고객사(비파괴검사 장비, 업체명 비공개) 홈페이지입니다. 8월 말에 시제품 사진을 블로그 메뉴에 추가하는 작업을 했고, 그 며칠 뒤 사장님이 "요즘 문의가 하나도 없다"고 하셨습니다.

홈페이지 자체는 정상이었습니다. 메뉴도 열리고 사진도 나옵니다. 그런데 고객지원 페이지에서 문의를 작성하고 보내기를 누르면 화면에 아무 반응이 없었습니다. 실패했다는 안내도 없고, 접수됐다는 안내도 없었습니다. 문의를 보낸 사람 입장에서는 "보냈다"고 생각하고 기다리게 되는 상태입니다.

고객사 홈페이지의 문의 안내 화면 (업체명은 가림)

이런 고장이 위험한 이유는 아무도 모른다는 점입니다. 홈페이지가 아예 안 열리면 바로 전화가 옵니다. 문의 폼만 죽으면 문의가 줄어든 건지, 안 들어오는 건지 구분이 안 됩니다.

원인

홈페이지는 두 부분으로 되어 있습니다.

  1. 화면 파일. 메뉴, 사진, 글. 사람이 보는 부분.
  2. 처리기. 문의 폼에서 보낸 내용을 받아서 저장하고 담당자 메일로 보내는 부분. 사람 눈에는 안 보임.

홈페이지는 화면 파일과 처리기 두 덩어리로 되어 있고, 화면만 올리면 처리기가 빠진다 (도식)

사진 추가 작업을 올릴 때 화면 파일만 올리는 명령을 썼습니다. 그 명령은 처리기를 건드리지 않는 게 아니라, 처리기가 없는 상태로 홈페이지를 통째로 바꿔 놓습니다. 그래서 문의 폼이 보내는 요청에 서버가 "그런 기능 없음"이라는 뜻의 405 응답을 돌려줬습니다.

“The 405 (Method Not Allowed) status code indicates that the method received in the request-line is known by the origin server but not supported by the target resource.”
R. Fielding, M. Nottingham, J. Reschke — RFC 9110: HTTP Semantics, §15.5.6, IETF

풀어 쓰면 "주소는 아는데 그 주소로 보내기는 못 받는다"는 뜻입니다. 문의 폼은 보내기(POST)를 쓰는데, 처리기가 빠진 홈페이지는 보여 주기(GET)만 할 줄 압니다.

이 사이트를 wrangler pages deploy public 으로 배포하지 말 것. 정적 파일만 올라가고 /api/contact 처리기가 빠진다. ./deploy.sh 또는 wrangler deploy 를 쓴다.

정리하면 코드가 틀린 게 아니라, 올리는 방법이 틀렸습니다. 홈페이지 수정 사고의 상당수가 이 유형입니다. 만든 사람은 잘 만들었는데, 나중에 다른 작업을 하면서 한 조각이 빠집니다.

수리 (같은 날, 30분)

  1. 처리기와 화면 파일을 한 번에 올리는 배포 명령으로 바꿨습니다. 화면만 올리는 명령은 문서에 "쓰지 말 것"으로 적었습니다.
  2. 올리기 전에 설정을 검사하고, 올린 뒤에는 실제 문의 주소로 빈 요청을 보내 봅니다. 처리기가 살아 있으면 "필수 항목 누락"이라는 정상 오류가 오고, 죽어 있으면 405가 옵니다. 405가 나오면 배포가 실패로 끝납니다.
  3. www가 붙은 주소에서도 같은 처리기가 응답하도록 경로를 추가했습니다. 검사해 보니 www 주소에서 문의를 보내면 또 다른 이유로 안 들어가고 있었습니다.
  4. 문의 메일 받는 주소를 담당자 두 명으로 두고, 한쪽 메일이 실패해도 다른 쪽은 받도록 각각 따로 보냅니다.

verify-contact.sh https://bory3d.com 은 400 missing_* JSON 응답을 돌려줘야 한다. 405 응답은 처리기 없이 정적 파일만 배포됐다는 뜻이다.

전후

수리 전수리 후
문의 보내기화면 무반응, 서버 405접수 번호 응답, 담당자 2명 메일 수신
www 주소에서 문의안 들어감정상
다음 업데이트 때 재발막을 장치 없음배포 중 자동 검사, 405면 배포 중단

수리 후 검사 결과: 두 주소 모두 처리기가 응답한다 (2026-09-23 실제 실행, 고객사 주소는 가림)

수리 전 405 화면은 당시 캡처를 남기지 않아 없습니다. 위 검사는 이 글을 쓰는 날 다시 실행한 결과입니다.

업데이트 뒤에 같이 확인할 것

이 사례에서 문의 폼만 죽은 게 아니었습니다. 검사를 붙이고 나서야 www 주소 문제도 드러났습니다. 홈페이지 사진이나 글을 바꾼 뒤에는 바뀐 화면만 보지 말고, 화면 뒤에서 도는 기능 세 가지를 같이 봐야 합니다.

  1. 문의 폼. 테스트 문의를 보내고 메일이 오는지.
  2. 주소 두 가지. www가 붙은 주소와 안 붙은 주소 양쪽에서 열리고, 양쪽에서 문의가 되는지.
  3. 자물쇠 표시. 주소창에 자물쇠가 있는지. 없으면 인증서가 만료됐거나 설정이 풀린 것입니다.

세 가지 모두 사장님이 브라우저만으로 확인할 수 있습니다. 개발자가 필요한 건 셋 중 하나라도 이상할 때부터입니다.

배포 스크립트는 자리표시자 설정을 거부하고, 로컬 설정 검사를 통과한 뒤에만 Worker와 정적 파일을 함께 올리며, 올린 뒤 실제 /api/contact 를 찔러 본다.

사장님이 직접 확인할 체크 항목 1개

한 달에 한 번, 본인 홈페이지 문의 폼으로 테스트 문의를 보내 보세요. 제목에 "테스트"라고만 적으면 됩니다. 10분 안에 메일이 오면 정상입니다. 안 오면 문의 폼이 죽어 있는 겁니다. 그 사이 들어왔어야 할 문의는 이미 없어진 상태이니, 확인 주기가 짧을수록 손해가 적습니다.

홈페이지 사진이나 글을 바꾼 직후에는 꼭 한 번 더 해 보세요. 이 사례처럼 업데이트 작업이 문의 폼을 끄는 경우가 가장 흔합니다.

이 증상이면 무료로 봐 드립니다

개바리는 이런 수정을 월 관리 구독 안에서 처리합니다. 문의 폼이 안 되는 것 같다, 업데이트 뒤 뭔가 이상하다 싶으면 무료 수정 3건 안에서 먼저 확인하고 고쳐 드립니다. 홈페이지 주소만 알려 주시면 됩니다.

자주 묻는 질문

홈페이지를 만든 업체와 연락이 안 되는데도 봐 줄 수 있나요?

네. 이 사례도 원래 만든 코드를 그대로 두고 올리는 방법만 바꿔서 고쳤습니다. 홈페이지 주소와 관리 화면 접속 정보만 있으면 대부분 확인할 수 있습니다.

문의 폼이 죽어 있었던 기간의 문의는 복구할 수 있나요?

처리기가 없는 상태에서 보낸 문의는 서버에 남지 않아 복구가 안 됩니다. 그래서 매달 테스트 문의를 권합니다.

내 홈페이지도 같은 구조인지 어떻게 아나요?

문의 폼이 있는 홈페이지는 거의 다 화면과 처리기가 나뉘어 있습니다. 위의 테스트 문의 한 번으로 살아 있는지 확인됩니다.