정적 사이트에서 Contact Form 7이 작동하지 않는 이유
WordPress 사이트를 정적 HTML로 내보냈습니다. 그런데 문의 양식(contact form)이 작동을 멈춥니다. 콘솔에는 404 에러가 나타납니다.
Contact Form 7은 PHP가 필요합니다. 데이터를 처리하기 위해 REST API를 사용하기 때문입니다. 정적 사이트에는 PHP가 없습니다. PHP가 없다는 것은 REST API도 없다는 뜻입니다.
어떤 이들은 CORS 때문이라고 말합니다. 하지만 CORS 헤더를 설정한다고 해서 서버가 없는 문제가 해결되지는 않습니다. 이메일을 처리할 백엔드가 반드시 필요합니다.
만약 Simply Static Pro를 사용 중이라면, 파일 권한을 확인하세요. JS 파일이 누락되어 이 에러가 발생할 수 있습니다. 다음 명령어를 실행하세요:
chmod 644 /var/www/html/wp-content/plugins/simply-static-pro/assets/ssp-form-webhook-public.js
다시 내보내기를 실행합니다.
해결 방법은 두 가지가 있습니다:
- WordPress를 서브도메인에 유지합니다. 이를 API로 활용하세요. .htaccess 파일에 CORS 헤더를 추가합니다.
- 정적 양식 서비스(static form service)를 사용합니다. Formspree 또는 Netlify Forms를 시도해 보세요.
디버깅 방법:
- WordPress URL 뒤에
/wp-json/을 붙여 접속해 봅니다. 404 에러가 뜨면 백엔드가 오프라인 상태인 것입니다. - 개발자 도구(DevTools)를 엽니다. 양식을 제출합니다. 404 또는 CORS 에러가 있는지 확인합니다.
forms.json파일을 확인합니다. 엔드포인트(endpoint)가 WordPress 도메인을 가리키고 있는지 확인하세요.
증상만 해결하려 하지 마세요. 아키텍처를 수정해야 합니다.