WordPress와 HTTPS는 보통 원활하게 작동하지만, 문제가 발생하면 오류가 혼란스러울 수 있습니다. 이 가이드는 모든 일반적인 WordPress SSL 문제와 해결 방법을 다룹니다.
초기 SSL 설정은 WordPress SSL 설치 가이드를 참고하세요.
ERR_TOO_MANY_REDIRECTS (리다이렉트 루프)
WordPress SSL 문제 1위. 브라우저에 “이 페이지가 작동하지 않습니다 — 너무 많이 리다이렉트되었습니다”라고 표시됩니다.
원인 1: 프록시 뒤에 있는 경우 (Cloudflare, 로드 밸런서)
프록시가 SSL을 종료하고 WordPress에 HTTP를 전달합니다. WordPress는 HTTP를 감지하고 HTTPS로 리다이렉트합니다. 프록시가 다시 HTTP를 전달합니다. 무한 루프.
해결 — wp-config.php에 추가 (/* That's all, stop editing! */ 앞에):
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Cloudflare를 사용하는 경우: SSL 모드도 “Full” 또는 “Full (Strict)“로 설정하세요 — 절대 “Flexible”로 설정하지 마세요.
원인 2: 충돌하는 리다이렉트
.htaccess가 HTTPS로 리다이렉트하고, WordPress 플러그인(예: Really Simple SSL)도 리다이렉트하고, 서버 설정도 리다이렉트합니다. 3중 리다이렉트 = 루프.
해결: 리다이렉트 소스를 하나만 유지하세요. 권장: .htaccess 리다이렉트, 플러그인 리다이렉트 비활성화.
원인 3: WordPress URL 불일치
설정 → 일반에 http://로 되어 있지만 서버가 HTTPS를 강제하는 경우.
해결 — wp-config.php를 통해 업데이트:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
혼합 콘텐츠 경고 (자물쇠 깨짐/누락)
HTTPS는 작동하지만 자물쇠 아이콘에 경고가 표시되거나 일부 리소스가 로드되지 않습니다.
원인: 페이지에서 이미지, 스크립트 또는 CSS를 http:// URL로 참조합니다 — 보통 마이그레이션 전에 데이터베이스에 저장된 것입니다.
빠른 해결: Really Simple SSL 플러그인
Really Simple SSL을 설치하고 활성화합니다 — http:// URL을 동적으로 재작성하고 upgrade-insecure-requests CSP 헤더를 추가합니다.
영구적 해결: 데이터베이스 검색-교체
# WP-CLI (권장)
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --precise
# 먼저 드라이 런으로 변경 사항 확인
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --dry-run
또는 GUI 방식으로 Better Search Replace 플러그인을 사용하세요.
추가 확인 사항:
- 테마 파일(
header.php,footer.php)에 하드코딩된http://URL - 위젯 콘텐츠 (텍스트 위젯, 사용자 정의 HTML)
- 커스터마이저의 사용자 정의 CSS
- 플러그인 설정 (소셜 공유 이미지, 로고 URL)
HTTPS 활성화 후 흰 화면 / 500 오류
원인 1: .htaccess 충돌
HTTPS 리다이렉트 규칙이 WordPress의 영구 링크 규칙과 충돌합니다.
해결: .htaccess 초기화:
# 현재 파일 이름 변경
mv .htaccess .htaccess.backup
# WordPress가 다시 생성
# 설정 → 영구 링크 → 저장 (변경 필요 없음)
그런 다음 상단에 HTTPS 리다이렉트만 다시 추가합니다:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
원인 2: 플러그인 충돌
보안 또는 캐싱 플러그인이 HTTPS 변경과 충돌할 수 있습니다.
해결: FTP를 통해 모든 플러그인 비활성화:
# 플러그인 디렉토리 이름 변경
mv wp-content/plugins wp-content/plugins.bak
사이트가 작동하면 다시 이름을 변경하고 플러그인을 하나씩 활성화하여 충돌을 찾습니다.
HTTPS 후 wp-admin 로그인 불가
원인: 쿠키 도메인 불일치
http://에 설정된 이전 쿠키가 https://에서 작동하지 않습니다.
해결:
// wp-config.php에 추가
define('FORCE_SSL_ADMIN', true);
define('COOKIE_DOMAIN', 'yourdomain.com');
그런 다음 도메인의 브라우저 쿠키를 삭제하거나 시크릿 창에서 시도합니다.
SSL 인증서 설치 후에도 WordPress가 HTTP 표시
원인: WordPress가 HTTPS를 인식하지 못함
인증서가 서버에 있지만 WordPress의 URL 설정이 여전히 http://입니다.
해결: 두 URL 모두 업데이트:
- wp-admin에 접근 가능한 경우: 설정 → 일반 → 두 URL을
https://로 변경 - wp-admin에 접근 불가한 경우:
wp-config.php에 추가:define('WP_HOME', 'https://yourdomain.com'); define('WP_SITEURL', 'https://yourdomain.com'); - wp-config.php가 작동하지 않는 경우: 데이터베이스 직접 업데이트:
UPDATE wp_options SET option_value = 'https://yourdomain.com' WHERE option_name IN ('siteurl', 'home');
Elementor / 페이지 빌더에서 HTTPS 후 레이아웃 깨짐
페이지 빌더는 게시물 메타에 절대 URL을 저장합니다. HTTPS로 마이그레이션한 후 다음을 실행합니다:
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables
Elementor의 경우 추가로 Elementor → Tools → Replace URL에서 http://를 https://로 업데이트합니다.
WooCommerce 결제가 HTTPS에서 작동하지 않음
원인 1: 혼합 콘텐츠가 결제 스크립트 차단
Stripe, PayPal 및 기타 결제 게이트웨이는 HTTPS를 요구하며 혼합 콘텐츠를 통해 로드되지 않습니다.
해결: 위의 데이터베이스 검색-교체를 실행하고 WooCommerce → 설정 → 결제에서 http:// 참조를 확인합니다.
원인 2: 보안 결제 강제 설정
WooCommerce에는 “Force secure checkout” 옵션이 있어 사이트 전체 HTTPS와 충돌할 수 있습니다.
해결: 전체 사이트가 HTTPS인 경우 이 옵션이 필요 없습니다. WooCommerce → 설정 → 고급 → 페이지 설정에서 체크를 해제합니다.
자주 묻는 질문
Really Simple SSL 플러그인이 필요한가요?
HTTP→HTTPS 전환을 쉽게 만들어 줍니다(특히 혼합 콘텐츠), 하지만 필수는 아닙니다. 데이터베이스 검색-교체를 실행하고 .htaccess에 리다이렉트를 설정하면 플러그인이 필요 없습니다. 플러그인은 매 페이지 로드마다 URL을 동적으로 재작성하므로 약간의 오버헤드가 있습니다.
인증서 설치 전과 후 중 언제 WordPress URL을 변경해야 하나요?
후에. 인증서를 설치하고 HTTPS가 작동하는지 먼저 확인합니다. 그런 다음 WordPress URL을 업데이트합니다. 인증서 준비 전에 URL을 업데이트하면 WordPress가 HTTPS를 제공하려고 하지만 할 수 없어서 관리자 접근이 차단될 수 있습니다.
캐싱 플러그인이 이전 HTTP 버전을 제공합니다
마이그레이션 후 모든 캐시를 삭제합니다:
- WP Super Cache / W3 Total Cache / LiteSpeed Cache: 플러그인 설정에서 캐시 삭제
- Cloudflare: Purge Everything
- 서버 측 (Varnish, Nginx cache): 캐시 삭제 또는 서비스 재시작
몇 달 전에 마이그레이션했는데 Google이 여전히 HTTP URL을 표시합니다
Google Search Console에 HTTPS 사이트맵을 제출하세요. 모든 페이지의 <link rel="canonical"> 태그가 https://를 가리키는지 확인합니다. Google이 재색인하는 데 몇 주가 걸릴 수 있습니다 — 301 리다이렉트가 도움이 되지만 즉각적이지는 않습니다.