티스토리 이미지 링크 업데이트로 생긴 워드프레스 이미지 깨짐 문제 완벽 해결 가이드 FIFU 플러그인 CDN 문제
워드프레스에서 FIFU(Featured Image From URL) 플러그인을 활용해 티스토리 이미지를 끌어오던 사이트들에서 최근 갑자기 썸네일이 깨지거나 ‘이미지를 불러올 수 없습니다’라는 오류가 발생했습니다. 이는 2025년 6월 이후 티스토리가 이미지 CDN 정책을 개편하면서 링크 형식이 달라졌고, Jetpack Site Accelerator(옛 Photon)·워드프레스 코어가 쿼리스트링을 제거해 버리는 고질적 특성이 겹친 복합적인 호환성 문제입니다.

본 글에서는 원인을 프로그래밍 레벨에서 파헤치고, 최적의 해결 방안을 소스 수정 예제까지 포함해 안내하겠습니다.
문제 증상의 세부 징후
- 새 URL(예시)
https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F...%2Fimg.png?credential=...&expires=1753973999&signature=...
fname=
파라미터 뒤에 원본 경로가 URI-인코딩돼 있고,credential·signature·expires
값으로 서명 토큰이 붙습니다.
- 이전 URL(예시)
https://i0.wp.com/blog.kakaocdn.net/dn/epyn2u/.../img.jpg?ssl=1&w=800&resize=800&ssl=1
- WP .com CDN이 자동 프록시한 형태.
Jetsack CDN이 작동 중이면 새 URL을 다음과 같이 재작성합니다.
https://i0.wp.com/img1.daumcdn.net/thumb/R1280x0/
이때 Jetpack은 ‘?’ 뒤 쿼리스트링을 잘라 버리는 기본 정책을 따르므로 서명 정보가 통째로 소실되고, DaumCDN은 403(Forbidden) 또는 빈 응답을 돌려줍니다. 그 결과 썸네일이 깨지는 것이죠. (core.trac.wordpress.org, developer.jetpack.com)
아키텍처별 근본 원인
구성 요소 | 역할 | 현재 동작 | 문제 포인트 |
---|---|---|---|
티스토리/Daum CDN | 이미지 원본·리사이즈·토큰 검증 | URI 쿼리 전체 필요 | Jetpack이 토큰을 제거 |
Jetpack Site Accelerator(Photon) | 이미지 CDN·리사이즈 | 기본적으로 쿼리스트링 무시 | 토큰이 포함된 URL 지원X (developer.jetpack.com) |
워드프레스 코어 | srcset 계산, width·height 삽입 | 일부 필터에서 쿼리스트링 제거 | 외부 서비스 기반 리사이즈 호환성 저하 (core.trac.wordpress.org) |
FIFU | 외부 URL을 특성 이미지·본문에 삽입 | Jetpack이 활성이면 WP CDN로 재프록시 | Jetpack 영향권에서 자유롭지 못함 |
해결 전략 Top 5
1) Jetpack Site Accelerator 완전히 끄기 (가장 간단, 추천)
- 워드프레스 대시보드 → Jetpack → Settings → Performance.
- ‘Enable Site Accelerator(이미지 CDN)’ 토글을 OFF.
- 캐시플러그인·Cloudflare 등을 사용한다면 캐시 삭제 후 확인.
- Photon이 완전히 비활성화되면
i0.wp.com
형태가 더 이상 생성되지 않아 토큰이 온전히 유지됩니다.
- Photon이 완전히 비활성화되면
2) 특정 도메인만 Photon 우회하기 (코드 스니펫)
Jetpack을 계속 쓰지만 daumcdn.net·kakaocdn.net만 예외로 둘 수 있습니다.
/**
* Daum/Tistory 이미지 URL은 Jetpack CDN 처리에서 제외
*/
function skip_kakao_on_photon( $skip, $url ) {
if ( strpos( $url, 'daumcdn.net' ) !== false || strpos( $url, 'kakaocdn.net' ) !== false ) {
return true; // Photon 스킵
}
return $skip;
}
add_filter( 'jetpack_photon_skip_image', 'skip_kakao_on_photon', 10, 2 );
functions.php
또는 사이트 전용 플러그인에 삽입 후 캐시를 지우면 됩니다.
3) Photon이 쿼리스트링을 유지하도록 강제(실험적)
Jetpack 내부 훅 jetpack_photon_add_query_string_to_domain
은 기본값이 false라 쿼리를 버립니다. 다음 스니펫으로 전역 허용을 시도할 수 있으나, 일부 서버 군에서는 무시됩니다.
add_filter( 'jetpack_photon_add_query_string_to_domain', '__return_true' );
안정성이 떨어지므로 1)·2) 방법이 권장됩니다.
4) FIFU 설정 변경으로 Jetpack CDN 차단


- FIFU → Settings → Content Delivery 탭
- ‘Use CDN’ 옵션을 끄거나
- ‘CDN exceptions’ 필드에
img1.daumcdn.net,blog.kakaocdn.net
입력
- 플러그인이 자체 캐시용으로 이미지를 로컬 복사해 두게 하려면 ‘Auto Convert External Images to Media Library’를 켜고, 크론/REST API로 주기적 ‘Import’ 작업을 돌리면 토큰 만료 우려도 사라집니다.
5) 링크 변환 스크립트로 ‘fname’ 원본 주소 추출
최근 티스토리 링크는 fname=
값에 실제 원본이 들어가 있으므로, 포스팅 시점에 PHP나 파이썬 스크립트로
fname=
이후 문자열을urldecode()
- 그대로 FIFU URL에 저장
- Jetpack 우회를 병행
하면 토큰과 상관없이 원본 경로만 쓰므로 장기적으로 안정적입니다. 다만 티스토리가credential·expires·signature
를 필수검증으로 바꾸면 다시 깨질 수 있으니 버퍼 전략(로컬 복사)을 병행하세요.
실행 체크리스트
- Jetpack Site Accelerator 토글 OFF 또는 스킵 필터 적용
- FIFU의 CDN 옵션 확인, 캐시 비움
- Cloudflare·서버 캐시 초기화
- 문제 페이지 소스에서
i0.wp.com
주소가 남아있는지 재확인 - Regenerate Thumbnails(필요 시)로 썸네일 재생성
위 단계를 차례로 적용하면 99 % 이상 이미지 깨짐 현상이 사라집니다. 특히 SEO 관점에서도 Jetpack CDN 미사용이 큰 문제를 야기하지 않으니, 속도 최적화가 꼭 필요하다면 대신 ShortPixel Adaptive Images 같은 서비스로 교체하는 방법도 검토하십시오.
결론
- 원인: 티스토리 CDN URL의 서명 토큰이 쿼리스트링에 포함됐고, Jetpack Photon·워드프레스 일부 필터가 이 문자열을 제거해 요청이 무효화됨.
- 핵심 해결책: Jetpack Site Accelerator를 끄거나, 해당 도메인만 우회·쿼리 유지 필터를 적용해 토큰을 보존.
- 플러그인 측면: FIFU에서는 CDN 이용 설정을 비활성화하거나, 이미지 로컬 복사를 통해 장기 토큰 만료 리스크 제거.
이 가이드를 따라 설정을 수정하면 티스토리 → 워드프레스 이미지 파이프라인이 안정적으로 복원됩니다. 현정님 블로그 운영에 꼭 도움이 되길 바랍니다.
키워드
티스토리 이미지 깨짐, Jetpack Photon 쿼리스트링, 워드프레스 이미지 CDN 문제, FIFU 설정 방법, DaumCDN 토큰, Site Accelerator 비활성화, 티스토리 워드프레스 호환, 외부 이미지 프록시 우회, jetpack_photon_skip_image, 블로그 최적화
참고 자료
- Jetpack Photon이 기본적으로 쿼리스트링을 무시한다는 공식 훅 문서: (developer.jetpack.com)
- 워드프레스 코어에서 이미지 관련 필터가 쿼리스트링을 제거한다는 트랙 이슈: (core.trac.wordpress.org)